home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
FAQSYS18.ZIP
/
FAQS.DAT
/
MCONTROL.FAQ
< prev
next >
Wrap
Internet Message Format
|
1995-12-12
|
144KB
Path: senator-bedfellow.mit.edu!faqserv
From: sibit@datasrv.co.il (Russ Hersch)
Newsgroups: comp.robotics,comp.sys.intel,comp.sys.m68k,comp.sys.6809,sci.electronics,alt.comp.hardware.homebuilt,comp.answers,sci.answers,alt.answers,news.answers
Subject: Microcontroller primer and FAQ
Supersedes: <microcontroller-faq/primer_793809409@rtfm.mit.edu>
Followup-To: poster
Date: 30 Mar 1995 22:41:42 GMT
Organization: none
Lines: 3199
Approved: news-answers-request@MIT.EDU
Expires: 14 May 1995 22:39:04 GMT
Message-ID: <microcontroller-faq/primer_796603144@rtfm.mit.edu>
NNTP-Posting-Host: bloom-picayune.mit.edu
Summary: This article is a primer and general FAQ about microcontrollers.
X-Last-Updated: 1995/03/30
Originator: faqserv@bloom-picayune.MIT.EDU
Xref: senator-bedfellow.mit.edu comp.robotics:19277 comp.sys.intel:42593 comp.sys.m68k:8399 sci.electronics:125294 alt.comp.hardware.homebuilt:8692 comp.answers:10946 sci.answers:2391 alt.answers:8396 news.answers:41003
Archive-name: microcontroller-faq/primer
Posting-Frequency: monthly
Last-modified: Mar. 30, 1995
This article is a primer and general FAQ about microcontrollers.
Included is a collection of information sources on various
microcontrollers.
The following topics are addressed:
0) Rantings and ravings (to make the FAQ zero-based)
1) ABOUT THIS FAQ
1.1) Who put this FAQ together?
1.2) How can I contribute to this FAQ?
1.3) What newsgroups will this FAQ be posted to?
1.4) May I distribute this FAQ or post it somewhere else?
2) MICROCONTROLLERS
2.1) What is a Microcontroller?
2.2) Applications
2.3) Flavors
3) THE MICROCONTROLLER MARKET
3.1) Shipments
3.2) Industrial applications
3.3) Deciding whose microcontroller to use
3.4) The players
4) MICROCONTROLLER FEATURES
4.1) Fabrication techniques
4.2) Architectural features
4.3) Advanced Memory options
4.4) Power Management and Low Voltage
4.5) I/O
4.6) Interrupts
4.7) Special microcontroller features
5) SOME POPULAR MICROCONTROLLERS
6) GETTING STARTED WITH MICROCONTROLLERS
6.1) Evaluation Kits/Boards
6.2) Easy chips to use
6.3) Software (cheap and easy)
7) MICROCONTROLLER PROGRAMMING LANGUAGES
7.1) Machine/Assembly language
7.2) Interpreters
7.3) Compilers
7.4) Fuzzy Logic and Neural Networks
8) DEVELOPMENT TOOLS
8.1) Simulators
8.2) Resident Debuggers
8.3) Emulators
8.4) Good Stereo System
9) FINDING OUT MORE ABOUT MICROCONTROLLERS
9.1) Books
9.2) Data and Reference Books
9.3) Periodicals
9.4) Internet newsgroups
9.5) Internet sources of information on specific microcontrollers
10) MICROCONTROLLER FREE SOFTWARE SOURCES
10.1) FTP sites
10.2) WEB pages
10.2) BBSs
10.3) Mailing lists
0) Rantings and ravings
Disclaimer: Just so it is understood, the "rantings and ravings" are
my rantings and ravings. My readers are refined and sophisticated
and would never rant or rave. I, on the other hand, sit in front of
the TV in torn underwear and drink beer out of the bottle.
My sincerest apologies to anyone that wrote to me, and didn't get a
reply. I was inundated this time, and I'm afraid that I wasn't too
careful in keeping track of my email. Also, some of those I did
respond to didn't hear from me because their email addresses were
invalid (or, at least my system thinks so). So, if you feel
neglected, or you submitted some information that didn't make it into
this month's update, please drop me a note and let me know. A
thousand pardons!
Well, the verdict is in. No, I'm not talking about OJ - I'm talking
about one-part FAQs versus multi-part. The response has been nearly
unanimous to keep the FAQs in one piece. So, one piece it is.
Lots of good stuff this time...
Thanks to Olaf 'Olu' Pfeiffer of Hitex who has made this FAQ
available on a web page:
http://www.ba-karlsruhe.de/automation/ctrl/FAQ/microFAQ/microFAQ.html
Thanks to Ted MacDonald for the following hint: "If you contact
Motorola at 800-521-6274 and order literature #M68HC11RM/AD, they
will send, free of charge, a reference manual for the 6811. Thought
this might be useful for others."
National Semiconductor / MetaLink COP8780 Evaluation/Programming Unit
Robin Getz of National Semiconductor supplied me with a
pre-release version of the EPU. I haven't really had much of an
opportunity to put it through its paces yet, but it's an
interesting looking new product. This kit offers designers a
low-cost tool for an introduction to National's COP8 Basic Family
of 8-bit microcontrollers.
This development tool gives you an inexpensive way to benchmark
and evaluate microcontroller code in real-time. With its built in
MIRCOWIRE/PLUS interface, it can interface to numerous
MICROWIRE/PLUS devices such as EPROMS, EEPROMS, D/As, A/Ds, DASs,
and others, to give a full featured system. The system includes
the EPU board, 2 8780Cx parts (early kits have OTPs, later kits
will have windowed parts), assembler, debugger, sample code, a
very limited C compiler, a wall power supply, and a really great
box :-).
The EPU is an in-circuit simulator. It plugs into your target
system in place of an COP880C microcontroller and it executes code
using a COP8780CJ [emulator] microcontroller on the EPU board.
Like a software simulator, it does not run real time. Hardware
and software control the microcontroller cycle-by-cycle, and break
handling and tracing are done completely through software.
Documentation includes a COP8 Series Microcontroller User's Manual
(this is missing in the first run, you'll have to ask for one), a
comprehensive assembler manual, and various product line
literature. The documentation on the kit itself is scant, but
gives enough information to get the job done.
This is a nice way to get started with microcontrollers, and the
COP800 is an interesting chip with a powerful and efficient
instruction set. For only $125, this is worth checking out.
Mention this FAQ, and I'm sure they'll be glad to double the
price.
Philips Semiconductor / CEIBO DS750 Devolopment Tools
A good way to learn about 8051 programming, this kit is based on
the 8xc7xx series which are very low-end, inexpensive micros.
They are offered with less memory (1k, 2k, etc.) and fewer
features. In fact the 83c750 sells for only $1 in very high OEM
volumes.
The kit includes a DS750 board, source level debugger, and
utilities. Both DOS and Windows versions of the software are
included on the diskette, and installation is a snap. I don't
understand why, but no assembler is included! A number of
assemblers and C compilers are compatible with (or adaptable to)
the source level debugger, including: Keil/Franklin, IAR, and
Micro Computer Control. If you're on a budget, the Micro Computer
Control package is only $100 - the prices of the other packages
are a bit more creative :-). Philips also has the MetaLink
assembler available for free on their BBS.
The DS750 has 3 operating modes: real-time, simulator, and
simulator plus. It plugs into your target system in place of an
87c750 (24 pin) and it executes code using an 87c752 [emulator] on
the DS750 board.
Besides being a very nice platform for testing your code
real-time, the enclosed manual makes this package really
worthwhile. In addition to the obligatory startup and operation
information, the book includes schematics and theory of the
board's operation. Five experiments guide the user on
understanding the workings and capabilities of the 8051 family.
Priced at only $100, a truckload of these have already been sold,
and for good reason. If you're interested in learning how to use
an 8051, you can't go wrong by buying this kit.
Minds-Online engineering ftp site and mailing lists:
A new ftp site (ftp.std.com:/customers2/nonprofits/minds-online)
should by now be up and running. It will have over 100 Mbytes of
engineering material. Chock full of compilers, assemblers, code,
articles, fuzzy logic, and much more. This is definitely worth
checking out!
A mailing list for announcing significant postings on this ftp
site is being gathered.
Another mailing list, this one MODERATED, will carry messages from
real engineers who are working on designs slated for volume
production. "No tire-kickers, no students, no academics, no
sleazy something-for-nothing ripoff artists, no hobbyists, and no
totally lost people will be able to post e-mail." (Uh, it looks
like that sort of leaves out yours truly, I certainly belong in
several, if not most, of those categories).
If you would like to be on one or both of these lists, send your
email address to: csmall@tiac.net. Put a good word in for me
while you're at it, my mind's usually off-line :-).
New book out!
A great book just landed on my desk. Not exactly about
microcontrollers, but it isn't another silly book by or about
Madonna either. The book is Posix.4: Programming for the Real
World by Bill O. Gallmeister and published by O'Reilly and
Associates. Written with a Unix perspective, the book is about
programming in the real world. Yeah, here's our connection with
microcontrollers. You know - microwave ovens, car braking
systems, mother-in-law detectors :-). Part I of the book
describes the Posix standard (what it is, what it isn't, and what
it's for), and explains the principles of real time programming
(tasking, messages, scheduling, I/O, and performance) and why Unix
isn't fit for real-time programming. Part II is a reference on
the Posix functions and header files. Part III contains much of
the code for the exercises in the book.
I'm enjoying this book - highly recommended!
Take care of yourselves,
Uncle Russ
1) ABOUT THIS FAQ
1.1) Who put this FAQ together?
From time to time, general questions about microcontrollers (from
beginners to experienced designers) pop up in the newsgroups. It
seemed that a general primer/FAQ on microcontrollers might be useful.
Much of this document could be considered as a sort of a primer on
microcontrollers. For those of you with previous experience,
sections 9 and 10 might be of special interest (especially for those
of you looking for that elusive "free COBOL compiler for the 1802").
1.2) How can I contribute to this list?
I please ask that if you have any suggestions or additions, or you
would like to correct any of the information contained herein, please
send me a note.
My Email address is: sibit@datasrv.co.il
My Smail address is:
Russ Hersch
HaVradim 11
Ginot Shomron
ISRAEL
Thanks to recent contributors to this document:
Dave Dunfield (Dunfield Development Systems)
Cecil Moore (Intel)
Ed Thompson (Micro Computer Control Corporation)
Kevin Gardner (Philips Semiconductor)
Victor Weiman (CEIBO)
Matt Albright (Motorola)
Tom Mornini (Parallax, Inc.)
Ken Tindell (Uppsala University, Sweden)
Paul K. Johnson (Hewlett Packard)
Reuven Melaver (Eastronics - National Semiconductor
Representative in Israel)
Olaf 'Olu' Pfeiffer (Hitex)
Ted MacDonald
John Piccirillo
Paul Hills
Jack Coats
Ed Sarkesian (who uses his old dirty socks to keep his
mother-in-law away
Mike Cepek (for pointing out so many errors :-)
Very special thanks to Robin L. Getz (National Semiconductor) who
probably could be considered an honorary co-author of this FAQ. :-)
Also, thanks to those who have posted questions and to those who have
posted answers. Thanks to "my new friends" who send suggestions and
encouragement, as well as the occasional question. Special thanks to
my mother-in-law, who thankfully will probably never read this
document ;-).
1.3) What newsgroups will this FAQ be posted to?
This FAQ will be posted to the following newsgroups:
comp.robotics
comp.sys.intel
comp.sys.m68k
comp.sys.6809
sci.electronics
alt.comp.hardware.homebuilt
I will post once a month - on or about the 26th of each month.
1.4) May I distribute this FAQ or post it somewhere else?
I am putting no restrictions on the use of this FAQ except - It must
be distributed in its entirety with the copyright notice, and no
financial gain may be realized from it. After all, I have spent, and
continue to spend, a lot of time on this.
For this reason I have appended a copyright statement to the end of
this FAQ. I feel pretty silly doing this, but I just want to protect
myself. The copyright does not limit the use of this list for
noncommercial purposes. I hereby give my permission to one and all
to pass this list around and post it wherever you want - as long as
it is not for financial gain.
Thank you.
2) MICROCONTROLLERS
2.1) What is a Microcontroller?
A controller is used to control (makes sense!) some process or aspect
of the environment. A typical microcontroller application is the
monitoring of my house. As the temperature rises, the controller
causes the windows to open. If the temperature goes above a certain
threshold, the air conditioner is activated. If the system detects
my mother-in-law approaching, the doors are locked and the windows
barred. In addition, upon detecting that my computer is turned on,
the stereo turns on at a deafening volume (for more on this, see the
section on development tools).
At one time, controllers were built exclusively from logic
components, and were usually large, heavy boxes (before this, they
were even bigger, more complex analog monstrosities). Later on,
microprocessors were used and the entire controller could fit on a
small circuit board. This is still common - you can find many [good]
controllers powered by one of the many common microprocessors
(including Zilog Z80, Intel 8088, Motorola 6809, and others).
As the process of miniaturization continued, all of the components
needed for a controller were built right onto one chip. A one chip
computer, or microcontroller was born. A microcontroller is a highly
integrated chip which includes, on one chip, all or most of the parts
needed for a controller. The microcontroller could be called a
"one-chip solution". It typically includes:
CPU (central processing unit)
RAM (Random Access Memory)
EPROM/PROM/ROM (Erasable Programmable Read Only Memory)
I/O (input/output) - serial and parallel
timers
interrupt controller
By only including the features specific to the task (control), cost
is relatively low. A typical microcontroller has bit manipulation
instructions, easy and direct access to I/O (input/output), and quick
and efficient interrupt processing. Microcontrollers are a "one-chip
solution" which drastically reduces parts count and design costs.
2.2) Applications
In addition to control applications such as the above home monitoring
system, microcontrollers are frequently found in embedded
applications. Among the many uses that you can find one or more
microcontrollers: appliances (microwave oven, refrigerators,
television and VCRs, stereos), automobiles (engine control,
diagnostics, climate control), environmental control (greenhouse,
factory, home), instrumentation, aerospace, and thousands of other
uses.
Microcontrollers are used extensively in robotics. In this
application, many specific tasks might be distributed among a large
number of microcontrollers in one system. Communications between
each microcontroller and a central, more powerful microcontroller (or
microcomputer, or even large computer) would enable information to be
processed by the central computer, or to be passed around to other
microcontrollers in the system.
A special application that microcontrollers are well suited for is
data logging. Stick one of these chips out in the middle of a corn
field or up in a ballon, and monitor and record environmental
parameters (temperature, humidity, rain, etc). Small size, low power
consumption, and flexibility make these devices ideal for unattended
data monitoring and recording.
2.3) Flavors
Microcontrollers come in many flavors and varieties. Depending on
the power and features that are needed, you might choose a 4 bit, 8
bit, 16 bit, or 32 bit microcontroller. In addition, some
specialized versions are available which include features specific
for communications, keyboard handling, signal processing, video
processing, and other tasks.
3) THE MICROCONTROLLER MARKET
Thanks to Robin Getz of National Semiconductor for supplying much of
the material in this section.
3.1) Shipments
WorldWide Microcontroller Shipments (in millions of dollars)
'90 '91 '92 '93 '94 '95 '96 '97 '98 '99 '00
4-bit 1,393 1,597 1,596 1,698 1,761 1,826 1,849 1,881 1,856 1,816 1,757
8-bit 2,077 2,615 2,862 3,703 4,689 5,634 6,553 7,529 8,423 9,219 9,715
16-bit 192 303 340 484 810 1,170 1,628 2,191 2,969 3,678 4,405
WorldWide Microcontroller Shipments (in Millions)
'90 '91 '92 '93 '94 '95 '96 '97 '98 '99 '00
4-bit 778 906 979 1036 1063 1110 1100 1096 1064 1025 970
8-bit 588 753 843 1073 1449 1803 2123 2374 2556 2681 2700
16-bit 22 38 45 59 106 157 227 313 419 501 585
Source: WSTS & ICE - 1994
If you were wondering why you should bother learning about
microcontrollers - well, the tables above should fairly scream the
answer at you. Microcontrollers will be *BIG* business - we're
talking piles of cash - billions!
Notice that even the lowly 4-bit device is holding its own - what use
is a 16-bit part in a toaster oven? Also notice that the 8-bit
market just keeps growing, and will probably continue to grow. 8-bit
devices account for over half of the market, and will eventually grab
even more. Now do you understand why every silicon manufacturer is
really pushing their 8-bit microcontrollers?
3.2) Industrial applications
Average Semiconductor Content per Passenger Automobile (in Dollars)
'90 '91 '92 '93 '94 '95 '96 '97 '98 '99 '00
$ 595 634 712 905 1,068 1,237 1,339 1,410 1,574 1,852 2,126
Source: ICE - 1994
The automotive market is the most important single driving force in
the microcontroller market, especially at it's high end. Several
microcontroller families were developed specifically for automotive
applications and were subsequently modified to serve other embedded
applications.
The automotive market is demanding. Electronics must operate under
extreme temperatures and be able to withstand vibration, shock, and
EMI. The electronics must be reliable, because a failure that causes
an accident can (and does) result in multi-million dollar lawsuits.
Reliability standards are high - but because these electronics also
compete in the consumer market - they have a low price tag.
Automotive is not the only market that is growing. DataQuest says
that in the average North American's home there are 35
microcontrollers. By the year 2000 - that number will grow to 240.
Consumer electronics is a booming business.
3.3) Deciding whose microcontroller to use
When deciding which devices to implement in a design, there are lots
of things to consider besides who else is using these devices (and
how many are they using).
- Can I expect help when I am having problems?
- What development tools are available and how much do they cost?
- What sort of documentation is available (reference manuals,
application notes, books)?
- Can I work a deal by purchasing more devices at one manufacturer?
That is, purchasing not only the microcontroller, but also
peripherals (A/D, memory, voltage regulator, etc.) from one
company).
- Do they support OTPs, windowed devices, mask parts?
3.4) The players
Here is a list of the big guys. Keep in mind that units does not
equal dollars. Since some companies deal primarily in higher end
devices, they need to sell fewer units to achieve a higher dollar
total.
Company Units (k) 1993
-----------------------------------------------
Motorola 358,894
Mitsubishi 71,674
NEC 70,180
Hitachi 67,873
Philips 56,680
Intel 46,876
SGS-Thomson 37,350
Microchip 35,477
Matsushitta 34,200
Toshiba 32,205
National Semiconductor 31,634
Zilog 31,000
Texas Instruments 29,725
Siemens 20,874
Sharp 17,505
SOURCE: DataQuest June 1994
The above numbers are just somebody's best guess - believe them if
you want to. Since they get paid to come up with these numbers, one
would hope that they would be fairly reliable. However, one of these
numbers is wrong for certain (and Robin Getz won't say whether it
should be higher or lower ;-).
4) MICROCONTROLLER FEATURES
Thanks to Robin Getz of National Semiconductor who supplied some of
the material in this section.
4.1) Fabrication techniques
CMOS - Complementary Metal Oxide Semiconductor
This is the name of a common technique used to fabricate most (if
not all) of the newer microcontrollers. CMOS requires much less
power than older fabrication techniques, which permits battery
operation. CMOS chips also can be fully or near fully static,
which means that the clock can be slowed up (or even stopped)
putting the chip in sleep mode. CMOS has a much higher immunity
to noise (power fluctuations or spikes) than the older fabrication
techniques.
PMP - Post Metal Programming (National Semiconductor)
PMP is a high-energy implantation process that allows
microcontroller ROM to be programmed AFTER final metalization.
Usually ROM is implemented in the second layer die, with nine or
ten other layers then added on top. That means the ROM pattern
must be specified early in the production process, and completed
prototypes devices won't be available typically for six to eight
weeks. With PMP, however, dies can be fully manufactured through
metalization and electrical tests (only the passivation layers
need to be added), and held in inventory. This means that ROM can
be programmed late in production cycle, making prototypes
available in only two weeks.
4.2) Architectural features
Von-Neuman Architecure
Microcontrollers based on the Von-Neuman architecture have a
single "data" bus that is used to fetch both instructions and
data. Program instructions and data are stored in a common main
memory. When such a controller addresses main memory, it first
fetches an instruction, and then it fetches the data to support
the instruction. The two separate fetches slows up the
controller's operation.
Harvard Architecture
Microcontrollers based on the Harvard Architecture have separate
data bus and an instruction bus. This allows execution to occur
in parallel. As an instruction is being "pre-fetched", the
current instruction is executing on the data bus. Once the
current instruction is complete, the next instruction is ready to
go. This pre-fetch theoretically allows for much faster execution
than a Von-Neuman architecture, but there is some added silicon
complexity.
CISC
Almost all of today's microcontrollers are based on the CISC
(Complex Instruction Set Computer) concept. The typical CISC
microcontroller has well over 80 instructions, many of them very
powerful and very specialized for specific control tasks. It is
quite common for the instructions to all behave quite differently.
Some might only operate on certain address spaces or registers,
and others might only recognize certain addressing modes.
The advantages of the CISC architecture is that many of the
instructions are macro-like, allowing the programmer to use one
instruction in place of many simpler instructions.
RISC
The industry trend for microprocessor design is for Reduced
Instruction Set Computers (RISC) designs. This is beginning to
spill over into the microntroller market. By implementing fewer
instructions, the chip designed is able to dedicate some of the
precious silicon real-estate for performance enhancing features.
The benefits of RISC design simplicity are a smaller chip, smaller
pin count, and very low power consumption.
Among some of the typical features of a RISC processor:
- Harvard architecture (separate buses for instructions and
data) allows simultaneous access of program and data, and
overlapping of some operations for increased processing
performance
- Instruction pipelining increases execution speed
- Orthogonal (symmetrical) instruction set for programming
simplicity; allows each instruction to operate on any
register or use any addressing mode; instructions have no
special combinations, exceptions, restrictions, or side
effects
SISC
Actually, a microcontroller is by definition a Reduced Instruction
Set Computer (at least in my opinion). It could really be called
a Specific Instruction Set Computer (SISC). The [original] idea
behind the microcontroller was to limit the capabilities of the
CPU itself, allowing a complete computer (memory, I/O, interrupts,
etc) to fit on the available real estate. At the expense of the
more general purpose instructions that make the standard
microprocessors (8088, 68000, 32032) so easy to use, the
instruction set was designed for the specific purpose of control
(powerful bit manipulation, easy and efficient I/O, and so on).
Microcontrollers now come with a mind boggling array of features
that aid the control engineer - watchdog timers, sleep/wakeup
modes, power management, powerful I/O channels, and so on. By
keeping the instruction set specific (and reduced), and thus
saving valuable real estate, more and more of these features can
be added, while maintaining the economy of the microcontroller.
4.3) Advanced Memory options
EEPROM - Electrically Erasable Programmable Read Only Memory
Many microcontrollers have limited amounts of EEPROM on the chip.
EEPROM seems more suited (becuase of its economics) for small
amounts of memory that hold a limited number of parameters that
may have to be changed from time to time. This type of memory is
relatively slow, and the number of erase/write cycles allowed in
its lifetime is limited.
FLASH (EPROM)
Flash provides a good better solution than regular EEPROM when
there is a requirement for large amounts of non-volatile program
memory. It is both faster and permits more erase/write cycles
than EEPROM.
Battery backed-up static RAM
Battery backed-up static RAM is useful when a large non-volatile
program and DATA space is required. A major advantage of static
RAM is that it is much faster than other types of non-volatile
memory so it is well suited for high performance application.
There also are no limits as to the number of times that it may be
written to so it is perfect for applications that keep and
manipulate large amounts of data locally.
Field programming/reprogramming
Using nonvolatile memory as a place to store program memory allows
the device to be reprogrammed in the field without removing the
microcontroller from the system that it controls. One such
application is in automotive engine controllers. Reprogrammable
non-volatile program memory on the engine's microcontroller allows
the engine controller program to be modified during routine
service to incorporate the latest features or to compensate for
such factors as engine aging and changing emissions control laws
(or even to fix bugs!!). Reprogramming of the microcontroller
could become a standard part the routine engine tune-up.
Almost every application could benefit from this type of program
memory - If a modem's hardware supported it, you could remotely
upgrade your modem from Vfast to V.34, or incorporate new features
such as voice control or a digital answering machine.
OTP - One Time Programmable
An OTP is a PROM (Programmable Read-Only-Memory) device. Once
your program is written into the device with a standard EPROM
programmer, it can not be erased or modified. This is usually
used for limited production runs before a ROM mask is done in
order to test code.
A OTP (One Time Programmable) part uses standard EPROM, but the
package has no window for erasing. Once your program is written
into the device with a standard EPROM programmer, it cannot be
erased or modified. (Well, sort of - any bit that is a one can be
changed to a zero - but a bit that is a zero cannot be changed
into a one).
As product design cycles get shorter, it is more important for
micro manufacturers to offer OTPs as an option. This was commonly
used for limited production runs before a ROM mask in order to
test code. However, one problem with Mask ROM is that
programming, setup, and engineering charges make it economical
only when the systems manufacturer purchases large quantities of
identically programmed micros. Then when you discover THAT bug
(and find it and fix your code), you have quantities of *old
buggy* micros around that you have to throw away. Not to mention
that lead time (the time when you submit your code to the micro
manufacture, to the time you receive your micro with your code on
it) can be at least 8 weeks, and as bad as 44 weeks.
Software protection
Either by encryption or fuse protection, the programmed software
is protected against unauthorized snooping (reverse engineering,
modifications, piracy, etc.).
This is only an option on OTPs and Windowed devices. On Masked
ROM devices, security is not needed - the only way to read your
code would be to rip the microcontroller apart with a scanning
electron microscope - and how many people really have one of
those?
Although - and this is a manufacturer's little know fact - when a
silicon manufacturer makes your ROMed microcontroller - they have
to test it in order to make sure that it is programmed properly.
(You should see what a spec of dust does on a mask :-) In order
to test this, they must be able to read out the ROM and compare it
to the code you submitted. This mode is known as test mode. IN
TEST MODE YOU CAN READ OUT THE ROM OF ANY DEVICE. Anybody who
tells you different, does not know what they are talking about -
or is lying. This is usually not a big deal because test mode is
***VERY*** confidential, and (usually) only known by that
manufacturer (i.e. you cannot put a device into test mode by
accident). Test mode is ONLY applicable with ROMed devices.
4.4) Power Management and Low Voltage
Low voltage parts
Since automotive applications have been the driving force behind
most microcontrollers, and 5 Volts is very easy to do in a car,
most microcontrollers have only supported 4.5 - 5.5 V operation.
In the recent past, as consumer goods are beginning to drive major
segments of the microcontroller market, and as consumer goods
become portable and lightweight, the requirement for 3 volt (and
lower) microcontrollers has become urgent (3 volts = 2 battery
solution / lower voltage = longer battery life). Most low voltage
parts in the market today are simply 5 volt parts that were
modified to operate at 3 volts (usually at a performance loss).
Some micros being released now are designed from the ground up to
operate properly at 3.0 (and lower) voltages, which offer
comparable performance of the 5 volt devices.
Now, why are voltages REALLY going down on ICs? Paul K. Johnson
(of Hewlett-Packard) explains:
There are a few interesting rules of thumb regarding transistors:
1) The amount of power they dissipate is proportional to their
size. If you make a transistor half as big, it dissipates
half as much power.
2) Their propagation delay is proportional to their size. If you
make a transistor half as big, it's twice as fast.
3) Their cost is proportional to the square of their size. If
you make them half as big, they cost one quarter as much.
If you make a transistor smaller, you improve the power, speed,
and cost. The only drawback is that they are harder to make.
(Well, how hard can it be for HP, IBM, Motorola, National, etc?)
Everybody in the world wants to make transistors smaller and
smaller, the advantages are enormous.
For years people have been using 5 Volts to power IC's. Because
the transistors were large, there was little danger damaging the
transistor putting this voltage across it. However, now that the
transistors are getting so small, 5 Volts will actually fry them.
The only way around this is to start lowering the voltage. This
is why people are now using 3 (actually 3.3) Volt logic, and lower
in the next few years. It isn't just because of batteries.
Brownout Protection
Brownout protection is usually an on-board protection circuit that
resets the device when the operating voltage (Vcc) is lower than
the brownout voltage. The device is held in reset and will remain
in reset when Vcc stays below the Brownout voltage. The device
will resume execution (from reset) after Vcc has risen above the
brownout Voltage.
Idle/Halt/Wakeup
The device can be placed into IDLE/HALT mode by software control.
In both Halt and Idle conditions the state of the microcontroller
remains. RAM is not cleared and any outputs are not changed. The
terms idle and halt often have different definitions, depending on
the manufacturer. What some call idle, others may call halt, and
vice versa. It can be confusing, so check the data sheet for the
device in question to be sure.
In IDLE mode, all activities are stopped except:
- associated on-board oscillator circuitry
- watchdog logic (if any)
- the clock monitor
- the idle timer (a free running timer)
Power supply requirements on the microcontroller in this mode are
typically around 30% of normal power requirements of the
microprocessor. Idle mode is exited by a reset, or some other
stimulus (such as timer interrupt, serial port, etc.). A special
timer/counter (the idle timer) causes the chip to wake up at a
regular interval to check if things are OK. The chip then goes
back to sleep.
IDLE mode is extremely useful for remote, unattended data logging
- the microprocessor wakes up at regular intervals, takes its
measurements, logs the data, and then goes back to sleep.
In Halt mode, all activities are stopped (including timers and
counters). The only way to wake up is by a reset or device
interrupt (such as an I/O port). The power requirements of the
device are minimal and the applied voltage (Vcc) can sometimes be
decreased below operating voltage without altering the state
(RAM/Outputs) of the device. Current consumption is typically
less than 1 uA.
A common application of HALT mode is in laptop keyboards. In
order to have maximum power saving, the controller is in halt
until it detects a keystroke (via a device interrupt). It then
wakes up, decodes and sends the keystroke to the host, and then
goes back into halt mode, waiting either for another keystroke, or
information from the host.
Multi-Input Wakeup (National Semiconductor)
The Multi-Input WakeUp (MIWU) feature is used to return (wakeup)
the microcontroller from either HALT or IDLE modes. Alternately
MIWU may also be used to generate up to 8 edge selectible external
interrupts. The user can select whether the trigger condition on
the pins is going to be either a positive edge (low to high) or a
negative edge (high to low).
4.5) I/O
UART
A UART (Universal Asynchronous Receiver Transmitter) is a serial
port adapter for asynchronous serial communications.
USART
A USART (Universal Synchronous/Asynchronous Receiver Transmitter)
is a serial port adapter for either asynchronous or synchronous
serial communications. Communications using a USART are typically
much faster (as much as 16 times) than with a UART.
Synchronous serial port
A synchronous serial port doesn't require start/stop bits and can
operate at much higher clock rates than an asynchronous serial
port. Used to communicate with high speed devices such as memory
servers, display drivers, additional A/D ports, etc. Can also be
used to implement a simple microcontroller network.
SPI (Motorola)
An SPI (serial peripheral interface) is a synchronous serial port.
SCI
An SCI (serial communications interface) is an enhanced UART
(asynchronous serial port).
I2C bus - Inter-Integrated Circuit bus (Philips)
The I2C bus is a simple 2 wire serial interface developed by
Philips. It was developed for 8 bit applications and is widely
used in consumer electronics, automotive and industrial
applications. In addition to microcontrollers, several
peripherals also exist that support the I2C bus.
The I2C bus is a two line, multi-master, multi-slave network
interface with collision detection. Up to 128 devices can exist
on the network and they can be spread out over 10 meters. Each
node (microcontroller or peripheral) may initiate a message, and
then transmit or receive data. The two lines of the network
consist of the serial data line and the serial clock line. Each
node on the network has a unique address which accompanies any
message passed between nodes. Since only 2 wires are needed, it
is easy to interconnect a number of devices.
MICROWIRE/PLUS (National Semiconductor)
MICROWIRE/PLUS is a serial synchronous bi-directional
communications interface. This is used on National Semiconductor
Corporation's devices (microcontrollers, A/D converters, display
drivers, EEPROMS, etc.).
CAN & J1850
CAN (Controller Area Network) is a mutiplexed wiring scheme that
was developed jointly by Bosh and Intel for wiring in automobiles.
J1850 is the SAE (Society of Automotive Engineers) multiplexed
automotive wiring standard that is currently in use in North
America.
Both of these groups have the "NOT INVENTED HERE" syndrome and
refuse to work with each other's standard. The standards are quite
different and are not compatible at all.
The CAN specification seems to be the one that is being used in
industrial control both in North American and Europe. With lower
cost microcontrollers that support CAN, CAN has a good potential
to take off.
Analog to Digital Conversion (A/D)
Converts an external analog signal (typically relative to voltage)
and converts it to a digital representation. Microcontrollers
that have this feature can be used for instrumention,
environmental data logging, or any application that lives in an
analog world.
The various types of A/D converters that can be found:
Succesive Approximation A/D converters -- This the most common
type of A/D and is used in the majority of microcontrollers. In
this technique, the converter figures out each bit at a time (most
significant first) and finds if the next step is higher or lower.
This way has some benefits - it takes exactly the same amount of
time for any conversion - it is very common - (and therefore very
cheap). However it also has some disadvantages - it is slow - for
every bit it takes at least one clock cycle - the best an 8-bit
A/D can do is at least 8 clock cycles (and a couple for
housekeeping). Because it takes so long - it is a power hog as
compared to the other types of A/Ds.
Single Slope A/D converters -- This is the type of converter that
you can build yourself (if the microcontroller has a couple of
analog blocks on it). Your single slope A/D converter would
include Analog Mux / comparator / timer (8-bit timer = 8 bit A/D -
16-bit timer = 16 bit A/D) with input capture and a constant
current source. The only microcontroller (that I know of) that
has all of this on it is National's COP888EK.
First Step is to clear the timer to 0000 and then start it. It is
a simple matter to hang an external capacitor, and charge it with
the constant current source (linearly because of the current
source) when the voltage on the cap exceeds the sampling voltage,
the comparitor toggles, stops the timer - and voila - you have the
voltage in uSecs - with 16-bit accuracy. The only drawback is you
can't really expect 16 bits (14 yes) - the conversion time varies
quite a bit, and it is SLOW.
Delta-Sigma A/Ds converters -- This type of A/D converter is found
on higher-end DSPs. These are the hardest to understand of the
A/Ds because it just makes a best guess (a little National
Semiconductor humor here :-). Delta sigma A/Ds can be broken down
into two main parts.
The modulator which does the A/D conversion and the filter, which
turns the output of the modulator into a format suitible for the
microcontroller (or DSP).
The modulator is very simple - it just compares the input voltage
to the average of the last 100 (or so) modulator outputs and
decides if the input is higher or lower than the average. This
happens millions of times a second, resulting in a high speed
single-bit datastream of 1s and 0s who's *average* is equal to the
input voltage. Becuse the ouput is only a one or a zero, there are
very few sources of errors. This is the main reason that
delta-sigma A/Ds are **very** accurate.
The filter comes after the modulator ... and this filter is
essentially a big DSP block. It must take the very high speed
stream of ones and zeros and turn it into a slower speed stream of
16-bit (or greater) words to be used by the microcontroller. This
process is called decimation and the filter is often called a
"comb filter". Another digital filter follows this stage and
rejects unwanted frequencies. This filter performs a similar
function to the anti-aliasing filter required in many traditional
A/D appliactions, but it does it at an unprecedented level of
performance and at low cost. This is the other major benefit of
delta-sigma A/Ds.
Flash A/D -- This is the basic architecure for the fastest
category of A/Ds. The flash converter involves looking at each
level that is possible and instantaneously saying what level the
voltage is at. This is done by setting up comparators as
threshold detectors with each detector being set up for a voltage
exaclty 1 LSB higher than the detector below it. The benefit of
this architecture is that with a single clock cycle, you can tell
exactly what the input voltage is - that is why it is so fast.
The disadvantage is that to achieve 8-bit accuracy you need 256
comparators and to achieve 10-bit accuracy you need 1024
comparators. To make these comparators operate at higher speeds,
they have to draw LOTS of current, and beyond 10 bits, the number
of comparators required becomes totally unmanageable.
D/A (Digital to Analog) Converters
This feature takes a Digital number and converts it to a analog
output. The number 50 would be changed to the analog output of
(50/256 * 5Volts) = .9765625V on a 8-bit / 5 Volt system.
Pulse width modulator
Often used as a digital-to-analog conversion technique. A pulse
train is generated and regulated with a low-pass filter to
generate a voltage proportional to the duty cycle.
Pulse accumulator
A pulse accumulator is an event counter. Each pulse increments
the pulse accumulator register, recording the number of times this
event has occurred.
Input Capture
Input Capture can measure external frequencies or time intervals
by copying the value from a free running timer into a register
when an external event occurs.
Comparator
One or more standard comparators can sometimes be placed on a
microcontroller die. These comparators operate much like standard
comparators however the input and output signals are available on
the microcontroller bus.
Mixed (Analog-Digital) Signal
We live in an analog world where the information we see, hear,
process, and exchange with each other, and with our mechanical and
electronic systems, is always an analog quantity - pressure,
temperature, voltage, current, air and water flow are always
analog entities. They can be digitized for more efficient
sorting, storage and transmittal, but the interface - the input
and output - is almost always analog. Thus the essence of analog
electronics lies in sensing continuously varying information,
shaping and converting it for the efficiency of digital processing
and transmission, and reshaping the digital data to an analog
signal at the other end.
Mixed analog-digital devices are being used increasingly to
integrate the complex functions of high-speed telecommunications,
or the real-time data processing demanded by industrial control
systems and automotive systems. Start looking for
microcontrollers that have analog comparators, analog
multiplexers, current sources, voltage doublers, PLL (Phase Lock
Loops) and all sorts of peripherals that you thought were analog
only.
4.6) Interrupts
Polling
Polling is not really a "feature" - it's what you have to do if
your microcontroller of choice does not have interrupts.
Polling is a software technique whereby the controller continually
asks a peripheral if it needs servicing. The peripheral sets a
flag when it has data ready for transferring to the controller,
which the controller notices on its next poll. Several such
peripherals can be polled in succession, with the controller
jumping to different software routines, depending on which flags
have been set.
Interrupts
Rather than have the microcontroller continually polling - that
is, asking peripherals (timers / UARTS / A/Ds / external
components) whether they have any data available (and finding most
of the time they do not), a more efficient method is to have the
peripherals tell the controller when they have data ready. The
controller can be carrying out its normal function, only
responding to peripherals when there is data to respond to. On
receipt of an interrupt, the controller suspends its current
operation, identifies the interrupting peripheral, then jumps
(vectors) to the appropriate interrupt service routine.
The advantage of interrupts, compared with polling, is the speed
of response to external events and reduced software overhead (of
continually asking peripherals if they have any data ready).
Most microcontrollers have at least one external interrupt, which
can be edge selectible (rising or falling) or level triggered.
Both systems (edge/level) have advantages. Edge - is not time
sensitive, but it is susceptible to gitches. Level - must be held
high (or low) for a specific duration (which can be a pain - but
is not susceptible to glitches).
Interrupts are critical when you are controlling anything (this is
what microcontrollers do). If you misunderstand any of the terms,
and design your systems with the way you *think* it works - not
the way it *really* works - it will effect system performance. It
may also work for a very long time with no problems, and then all
of a sudden fail. Check your datasheets - these descriptions are
the correct ones (or are at least supposed to be), but that does
not mean that they are agreed to by the silicon manufacturers, (or
by the marketing guys that they employ, and who write parts of the
data sheets.)
4 bit microcontrollers usually have either a polling or
non-vectored type of interrupt scheme. 8 and 16 bit
microcontrollers usually have some type of vectored arbitration
type of interrupt scheme. 32 bit microcontrollers usually will
have some type of vectored priority type of interrupt scheme.
Again, check your data sheet to make sure - or ask a
manufacturer's rep if you aren't sure.
Maskable Interrupts
A maskable interrupt is one that you can disable or enable
(masking it out means disabling the interrupt), whereas
non-maskable interrupts you can't disable. The benefit of
maskable interrupts is that you can turn off a particular
interrupts (for example a UART) during some time critical task.
Then, those particular interrupts will be ignored thus allowing
the microcontroller to deal with the task at hand. Most
microcontrollers (as well as most microprocessors) have some type
of Global Interrupt Enable (GIE) which allows you to turn off (or
on) all of the maskable interrupts with one bit. NOTE: GIE
usually does not effect any NMI (Non-Maskable Interrupts)
Vectored Interrupts
Simple (non-vectored) interrupts is one of the simplest interrupt
schemes there is (Simple = less silicon = more software = slower).
Whenever there is an interrupt, the program counter (PC) branches
to one specific address. At this address, the system designer
needs to check the interrupts (one at a time) to see which
peripheral has caused the interrupt to occur. Code for this may
look like (on a COP8):
IFBIT UART,PSW ; If the UART bit has been set
JP UART_Recieve ; Jump to the UART receive service routine
IFBIT T1,PSW ; If the timer has underflowed
JP Underflow ; Jump to the underflow service routine
... and so on
This can be *very* slow - and the time between the interrupt
happening and the time the service routine is entered, depends on
how the system designer sets up their ranking. The peripheral
that is checked last takes the longest to process. Most
microcontrollers that have fewer than 3 - 5 interrupts use this
method. The benefit of this is that the system designer can set
the priority - The most important peripheral gets checked first -
and you get to decide which peripheral that is.
Vectored interrupts are a little easier to set up, but the system
designer has less control of the system (i.e. is dependent on the
silicon manufacture to make the proper decisions during design of
the chip). When an interrupt occurs, the hardware interrupt
handler automatically branches to a specific address depending on
what interrupt occurred. This is much faster than the
non-vectored approach described above, however the system designer
does not get to decide what peripheral gets checked first.
Example (on a National Semiconductor COP888CG):
Rank Source Description Vector Address
------------------------------------------------------------------
1 (highest) Software INTR Instruction 01FE - 01FF
2 External Pin G0 Edge 01FA - 01FB
3 Timer T0 Underflow 01F8 - 01F9
4 Timer T1 T1A / Underflow 01F6 - 01F7
5 Timer T1 T1B 01F4 - 01F5
6 MICROWIRE/PLUS BUSY Goes Low 01F2 - 01F3
7 UART Receive 01EE - 01EF
8 UART Transmit 01EC - 01ED
9 Timer T2 T2A / Underflow 01EA - 01EB
10 Timer T2 T2B 01E8 - 01E9
11 Timer T3 T3A / Underflow 01E6 - 01E7
12 Timer T3 T3B 01E4 - 01E5
13 Port L / MIWU Port L Edge 01E2 - 01E3
14 (lowest) Default VIS Interaction 01E0 - 01E1
In ROM location 01F8 - 01F9 (2bytes x 8 bits = 16bit address) the
system designer enters the ROM location of where they want the
service routine (of the Timer T0 underflow) to be. And so on for
the rest of the addresses.
Interrupt arbitration and priority
Interrupt arbitration and priority - These are two of the most
misused words when it comes to microcontrollers (microprocessors
too for that matter) and it's generally because no one knows the
difference between them. Priority is not Arbitration.
Arbitration is not Priority. Lets see if we can sort out the
differences.
Arbitration - If you look at the above chart of the COP888CG, you
may think the interrupts are prioritized because they have some
ranking. They do have rank, but they are not prioritized. What
happens is that (in an arbitration scheme) when an interrupt
occurs, the GIE (Global Interrupt Enable) is cleared. This
effectively means that all future interrupts will be delayed until
the GIE is set. The GIE becomes set only if the system designer
sets it in a service routines, or on a RETI (Return from
Interrupt).
Quick Example 1 - Timer 1 underflows - the hardware clears the
GIE, looks at ROM locations 01F6 and 01F7 and jumps to the ROM
location pointed to by those addresses. The program does a couple
things, and then sets the GIE (because the user wants to recognize
an external interrupt during this service routine). However while
in the service routine, Timer 3 underflows. Although a timer 3
underflow is lower in rank than a timer 1 underflow, the interrupt
handler does not care - it simply looks at the GIE, and because it
is set - handles the interrupt (now we have nested interrupts).
The Timer 1 underflow service routine will not be completed until
the Timer 3 underflow is complete.
Quick Example 2 - Timer 3 underflows at the same time as an
External interrupt occur. The one to be handled first is the
External Interrupt. If the user sets the GIE, the interrupt
handler will jump down to the Timer 3 underflow handler. If the
user does not set the GIE, the microcontroller handles the
External interrupt, does a RETI, and the Timer 3 underflow can now
be handled.
Priority - In a priority scheme, things are prioritized (well,
what'd you expect?). If Timer T0 underflows, the only thing that
can interrupt that is an external or software interrupt. If a
external or software interrupt occurs, the interrupt handler will
branch to these service routines. When they are complete, it will
return to the Timer T0 underflow.
Quick Example - In the below timing diagram, the following
happens:
1) Timer T0 underflows
2) Timer T2 underflows
3) An External Interrupt occurs.
In a priority scheme, the following would happen:
External Interrupt |---------|
| |
Timer T0 Underflow |-------| |------|
| |
Timer T2 Underflow | |------|
| |
Normal Execution ---| |-------
^ ^ ^ ^ ^ ^
| | | | | |
Time -> | | | | | \-T2 Done
| | | | \-------- T0 Done
| | | \-------------- Ext Done
| | \------------------------ Ext Edge
| \----------------------- T2 Underflows
\--------------------------- T0 Underflows
This is what RTOS (Real Timer Operating Systems) do - prioritize
and handle interrupts.
4.7) Special microcontroller features
Watchdog timer
A watchdog timer provides a means of graceful recovery from a
system problem. This could be a program that goes into an endless
loop, or a hardware problem that prevents the program from
operating correctly. If the program fails to reset the watchdog
at some predetermined interval, a hardware reset will be
initiated. The bug may still exist, but at least the system has a
way to recover. This is especially useful for unattended systems.
Digital Signal Processors (DSP)
Microcontrollers react to and control events - DSPs execute
repetitive math-intensive algorithms. Today many embedded
applications require both types of processors, and semiconductor
manufacturers have responded by introducing microcontrollers with
on-chip DSP capability and DSPs with on-chip microcontrollers.
The most basic thing a DSP will do is a MACC (Multiply and
ACCumulate). The number of data bits a DSP can Multiply and
ACCumulate will determine the dynamic range (and therefore the
application).
Bits Fixed/Floating Dynamic Range Typical Application
8 Fixed 48 dB Telephone-quality voice
16 Fixed 96 dB Compact disk (marginal)
24 Fixed 144 dB Compact disk
(room for error)
Clock Monitor
A clock monitor can shut the microcontroller down (by holding the
microcontroller in reset) if the input clock is too slow. This
can usually be turned on or off under software control.
Resident program loader
Loads a program by Initializing program/data memory from either a
serial or parallel port. Convenient for prototyping or trying out
new features, eliminates the erase/burn/program cycle typical with
EPROMs, and allows convenient updating of a system even from an
offsite location.
Monitor
A monitor is a program installed in the microcontroller which
provides basic development and debug capabilities. Typical
capabilities of a microcontroller monitor include: loading object
files into system RAM, executing programs, examining and modifying
memory and registers, code disassembly, setting breakpoints, and
single-stepping through code. Some simple monitors only allow
basic functions such as memory inspection, and the more
sophisticated monitors are capable of a full range of debug
functions.
Monitors can either communicate with a dumb terminal or with a
host computer such as a PC. Much of the work of the monitor (such
as user interface) can be offloaded to the host PC running a
program designed to work with the monitor. This makes it possible
to reduce the size and complexity of the code that must be
installed in the target system.
MIL transducer
An MIL transducer is a sophisticated and expensive device that
detects the presence of your mother-in-law. Sensitivity settings
are possible for a full range of stimuli such as: snarling,
stomping, nasty faces, and others. Techno-Wimp (address withheld
upon request), the sole manufacturer of the MIL transducer, has
recently announced a major new version which is sensitive enough
to detect less-tangible stimuli. This breakthrough product is
dubbed the MIL-WOMF ("Whoa, outta my face!") transducer. Both the
original MIL and the new MIL-WOMF transducers are programmable and
easy to interface to most microcontrollers.
5) Some popular microcontrollers
Some common microcontrollers are described below. A common question
is "what microcontroller should I use for...?" Well, that's a tough
one. The best advice would be to choose a chip that has a full set
of development tools at the price you can afford, and good
documentation. For the hobbyist, the Intel 8051, Motorola 68hc11, or
Microchip PIC would all make suitable choices.
8048 (Intel)
The grandaddy of 'em all, the first microcontroller, it all
started here! Although a bit long in the tooth and a bit kludgey
in design (at least by today's standards), it is still very
popular due to its very low cost, availability, and wide range of
development tools.
Modified Harvard architecture with program ROM on chip with an
additional 64 to 256 bytes of RAM also on chip. I/O is mapped in
its own space.
8051 (Intel and others)
The 8051, Intel's second generation of microcontrollers, rules the
microcontroller market at the present time. Although featuring a
somewhat bizarre design, it is a very powerful and easy to program
chip (once you get used to it).
Modified Harvard architecture with separate address spaces for
program memory and data memory. The program memory can be up to
64K. The lower portion (4K or 8K depending on type) may reside on
chip. The 8051 can address up to 64K of external data memory, and
is accessed only by indirect addressing. The 8051 has 128 bytes
(256 bytes for the 8052) of on-chip RAM, plus a number of special
function registers (SFRs). I/O is mapped in its own space.
The 8051 features the so-called "boolean processor". This refers
to the way instructions can single out bits just about anywhere
(RAM, accumulators, I/O registers, etc.), perform complex bit
tests and comparisons, and then execute relative jumps based on
the results.
Piles of software, both commercial and free, are available for the
8051 line. Many manufacturers supply what must be a hundred
different variants of this chip for any requirement. Often
featured in construction projects in the popular hobbyist
magazines.
80c196 (MCS-96)
The third generation of Intel microprocessors, the 80c196 is a 16
bit processor. Originally fabricated in NMOS (8096), it is now
mainly available in CMOS. Intel Corp. has recently introduced a
clock-doubled (50MHz) version of the 80c196.
Among the many features it includes are: hardware multiply and
divide, 6 addressing modes, high speed I/O, A/D, serial
communications channel, up to 40 I/O ports, 8 source priority
interrupt controller, PWM generator, and watchdog timer.
80186,80188 (Intel)
These chips are, in essence, microcontroller versions of the 8086
and 8088 (of IBM/PC fame). Included on the chip are: 2 channels
of DMA, 2 counter/timers, programmable interrupt controller, and
dynamic RAM refresh. There are several variations including: low
power versions, variations with serial ports, and so on.
One major advantage you gain by using one of these parts is that
you can use standard PC development tools (compilers, assemblers,
etc) for developing you applications. If you are already familiar
with PC software development, the learning curve will be short,
since these chips have the same basic architecture as the original
8088 (as used in the IBM/PC).
Other advantages include high speed processing, a full megabyte
addressing space, and powerful interrupt processing.
80386 EX (Intel)
The 80386 EX is of course a 386 in microcontroller clothing.
Included on the chip are: serial I/O, power management, DMA,
counter/timers, programmable interrupt controller, and dynamic RAM
refresh. And of course, all of the power of the 386
microprocessor.
One major advantage you gain by using one of these parts is that
you can use standard PC development tools (compilers, assemblers,
etc) for developing your applications. If you are already
familiar with PC software development, the learning curve will be
short, since these chips have the same basic architecture as the
original 8088 (as used in the IBM/PC).
We're talking power here gang. Now let's all wait for Microsoft
to release a version of Windows for embedded and real-time
applications (Windows ET? Windows RT? Windows 2000? :-).
6805 (Motorola)
The 6805 is based loosely on the manufacturer's earlier 6800, with
some similarities to the 6502. It has a Von-Neuman architecture
in which instructions, data, I/O, and timers all share the same
space. Stack pointer is 5 bits wide which limits the stack to 32
bytes deep. Some members of this family include on chip A/D, PLL
frequency synthesizer, serial I/O, and software security.
68hc11 (Motorola and others)
The popular 68hc11 is a powerful 8-bit data, 16-bit address
microcontroller from Motorola (the sole supplier) with an
instruction set that is similar to the older 68xx parts (6801,
6805, 6809). The 68hc11 has a common memory architecture in which
instructions, data, I/O, and timers all share the same memory
space.
Depending on the variety, the 68hc11 has built-in EEPROM/OTPROM,
RAM, digital I/O, timers, A/D converter, PWM generator, pulse
accumulator, and synchronous and ansynchronous communications
channels. Typical current draw is less than 20ma.
683xx (Motorola)
The MC68EC300 series incorporates various peripherals into various
68k family core processors. These can be called "integrated
processors". They are really super-microcontrollers, very high
performance, capable of high processing speeds, and able to
address large amounts of memory. A typical example from this line
would be the 68331. It is based on a 68020-like core and has
about the same processing power as an Intel 80386.
PIC (MicroChip)
While watching my 8 year old daughter play with her Barbie Dolls
(she has about 7 or so, including two that used to belong to Roz,
my wife, when she was a girl) I noticed an interesting difference
between the old dolls and the new dolls. The old Barbies could
only move their heads sideways, while the new Barbies not only can
move their heads sideways, but also up and down. AMAZING - the
old Barbies were good girls - they could only say no. The new
Barbies however can also say yes. Progress - isn't it wonderful!
(Not to mention the gymnast Barbie that Dave Perry's daughter got
for Christmas - "wait'll you see what *she* can do ;-)"
Which leads me to an amazing fact. Most everyone thinks of the
PIC microcontroller line as being a recent introduction. However,
they've been popular for over 20 years. What's the difference?
Microchip (which was originally [owned by] General Instruments),
seems to have recreated this microcontroller into a product
universally regarded as a powerful and cost effective solution.
The new chips are fabricated in CMOS, some features have been
added, and new family lines have been introduced.
The PIC microcontrollers were the first RISC microcontrollers.
RISC generally implies that simplicity of design allows more
features to be added at lower cost, and the PIC line is no
exception. Although having few instructions (eg. 33 instructions
for the 16C5X line versus over 90 for the Intel 8048), the PIC
line has a wealth of features included as part of the chip.
Separate buses for instructions and data (Harvard architecture)
allows simultaneous access of program and data, and overlapping of
some operations for increased processing performance. The
benefits of design simplicity are a very small chip, small pin
count, and very low power consumption.
PIC microcontrollers are rapidly gaining in popularity. They are
being featured more and more often in construction projects in
popular hobbyist magazines, and are chalking up a good number of
design wins. Due to their low cost, small size, and low power
consumption, these microcontrollers can now be used in areas that
previously wouldn't have been appropriate (such as logic
circuits). They are currently available in three lines: the
PIC16C5x, PIC16Cxx, and PIC17Cxx families.
PSST! Hey kid! Want a naked Barbie Doll?!
COP400 Family (National Semiconductor)
The COP400 Family is a P2CMOS 4-bit microcontroller which offers
512 bytes to 2K ROM and 32x4 to 160x4 RAM. Packages are varied
from 20 to 28 pin (DIP/SO/PLCC). Functions include Microwire,
timers counters, 2.3 to 6.0 Volt operation, ROMless modes, and OTP
support.
Far from being "old" technology - 4-bit microcontrollers are
meeting significant market needs in more applications than ever
before. The reason for the continuing strength of the COP400
family is its versatility. Over 60 different, compatible devices
are available for a wide range of requirements. The first under
$.50 microcontroller set a new standard of value for
cost/performance.
COP800 Family (National Semiconductor)
The COP800 Basic Family is a fully static 8-bit microcontroller,
fabricated using double metal silicon gate microCMOS technology.
This low cost microcontroller contains all system timing,
interrupt logic, ROM, RAM, and I/O necessary to implement
dedicated control functions in a variety of applications.
Depending on the device, features include: 8-bit memory mapped
architect, MICROWIRE serial I/O, UART, memory mapped I/O, many 16
bit timer/counters with capture registers, a multi-sourced
vectored interrupt, comparator, WATCHDOG Timer and Clock monitor,
Modulator/Timer (high speed PWM timer for IR transmission),
8-channel A/D converter with prescaler and both differential and
single-ended modes, brownout protection, halt mode, idle mode,
high current I/O pins with 15mA sink capability, Schmitt trigger
inputs and Multi-Input-Wake-Up. Most devices operate over a
voltage range from 2.5V to 6V.
High throughput is achieved with an efficient, powerful
instruction set operating at a 1uS per instruction rate (most
instructions are single byte/single cycle) including true bit
manipulation and BCD arithmetic instructions. Most devices have
military versions for -55C to +125C.
HPC Family (National Semiconductor)
The HPC Family of High Performance microControllers is a 16-bit
controller fabricated using National's advanced microCMOS
technology. This process combined with an advanced architecture
provides fast, flexible I/O control, efficient data manipulation,
and high speed computation.
With its 16x16 bit multiply and 32x16 bit divide, the HPC is
appropriate for compute-intensive environments that used to be the
sole domain of the microprocessor. The architecture is a
Von-Neuman architecture where the program and data memory share
the same address space.
Depending on the family member, features include: 16-bit
memory-mapped architecture with software configurable external
address/data bus, Microwire/Plus serial I/O, UART, 16-bit
timer/counters with input capture capability, High-Level Data Link
Control (HDLC) for ISO-standard data communications, 8-channel A/D
converter with prescaler and both differential and single-ended
modes, power-saving modes, Multiply/Accumulate Unit with built-in
circular buffer management for low to medium DSP applications,
software configurable chip-select outputs, 64KB address space
directly addressable, low-voltage (3.3V) operation.
High throughput is achieved with an efficient, powerful
instruction set operating at a 50ns per instruction cycle (most
instructions are single byte/single cycle) including true bit
manipulation. Key applications currently using the HPC family
include: Anti-lock Braking Systems, Hard Disk drives for mass
storage, telecommunications, security systems, laser printers, and
some military applications.
Project Piranha (National Semiconductor)
Project Piranha is an internal code name for National
Semiconductor's embedded RISC processor technology. The Piranha
technology represents the first RISC processor specifically
designed for the needs of embedded applications. This was
accomplished through examination of the needs of typical embedded
applications, resulting in a technology which maintains the
benefits of CISC while providing the performance of RISC.
Specifically, some of these benefits are:
compact code density --> smaller memory usage/
lower system cost
small core size --> more room for add-on system design
scalable architecture --> a range of performance solutions
from 8 to 64 bits with a common architecture
common instruction set --> you only face the learning curve
and development tools once
modular design --> designed for easy integration of
specialized functions into
single chip
This technology is initially being implemented in application
specific products from National Semiconductor, with the first
product being available in Q1, 1995. For further information on
this technology, please contact Mark Throndson at
tmetsc@esd.nsc.com, or (408) 721-4957.
Z8 (Zilog)
A "loose" derivative of the Zilog Z80, the Z8 is actually a
composite of several different achitectures. Not really
compatible with the Z80 peripherals. Has a unique architecture
with three memory spaces: program memory, data memory, and a CPU
register file. On-chip features include UART, timers, DMA, up to
40 I/O lines. Some versions include a synchronous/asynchronous
serial channel. Features fast interrupt response with 37
interrupt sources. The Z8671 has Tiny Basic in ROM. The Super-8
is just that, a super version of the Z8 with more of everything.
HD64180 (Hitachi)
A powerful microcontroller with full Z80 functionality plus:
extended memory management, two DMA channels, synchronous and
asynchronous communications channels, timers, and interrupt
controller. Some versions of this chip also include EPROM, RAM,
and PIO (programmable input/output). It runs Z80 code in fewer
clock cycles than the Z80 and adds in hardware multiply and a few
other instructions. Available in versions that run up to 18MHz.
TMS370 (Texas Instruments)
It is similar to the 8051 in having 256 registers, A and B
accumulators, stack in the register page, etc. It also has a
host of onboard support devices, some members have all of them
while others have a subset, the peripherals include: RAM, ROM
(mask, OTP, or EEPROM), 2 timers (configurable as timers/
counters/comparators/PWM output), watchdog timer, SCI (syncronous
serial port), SPI (asynchronous serial port), A/D (8 bit, 8
channel), interrupts.
Instruction set is mostly 8 bit with some 16 bit support. Has
several addressing modes, 8x8 multiply, 16/8 divide. Clock speeds
are up to 20MHz which gives 5MHz for buss access and instruction
cycles. Pins mostly TTL compatible (except clock and reset).
Packages include:
28,40 DIP
28 CLCC
28,44,68 PLCC
40,64 SDIP
A developers/proto board is available. It is a multi layer PCB
about 12"x7" with RS-232 serial I/O, and monitor as well as access
to all processor pins on a patch and proto area. Support software
includes IBM-PC monitor & loader, cross assembler (absolute only).
A pure serial TTY monitor is also supported. Sole power
requirement is +5v. Priced is about $500 or so.
A relocating assembler and linker, and a C compiler are also
available.
1802 (RCA)
This is a real old-timer. The 1802 is the successor to the 1801
(2 chip set) which was the first microprocessor implemented in
CMOS. Both products were called microprocessors by RCA, not
microcontrollers. However, since the 1801 was implemented in CMOS
and therefore had low power requirements, it was often used in
microcontroller applications. The 1802, with its higher level of
integration and ease of use, could actually be considered a true
microcontroller. The 1802 is radiation hard and used in a lot of
deep space and satellite applications.
The 1802 has a fairly clean instruction set, a bunch of
general-purpose registers (more like a Z80 than an 8051 in that
regard), and separate data and I/O address spaces.
MuP21 (Forth chip)
The MuP21 was designed by Chuck Moore, the inventor of Forth.
With the MuP21, Forth can compile into machine code and still be
Forth, because the machine code IS Forth. The MuP21 freaks out at
100 MIPS while consuming only 50 milliwatts. Not only that, the
chip includes a video generator, has only about 7000 transistors
(that's right, 7000 and not 7,000,000), and costs about $20.
The assembler on this chip is a sort of dialect of Forth, as the
CPU is modeled after the Forth virtual machine. MuP21 is a
MINIMAL Forth engine. In fact MuP21 was designed to run OKAD
(Chuck Moore's VLSI CAD softare), and OKAD was designed to run on
MuP21. OKAD was run on a 486 to design MuP21, and MuP21 was
designed to have just enough hardware to run OKAD about ten times
as fast as a 486 on a very cheap chip (the MuP21). That's the
reason for the MuP21's on-chip video generator coprocessor. The
CPU programs the video generator and then just manipulates the
video buffer. It is composite video out, so it only needs one
pin. MuP21 is only a 40 pin chip.
MuP21 chips, boards, software, manuals, and spec sheets are
available from:
Offete Enterprises
1306 South B Street, San Mateo CA 94402
(415) 574-8250
Email: Chen_Ting@umacmail.apldbio.com
F21 (Next generation Forth chip)
F21 will be bigger (10k vs 7k transistors for the MuP21!) but
since it is going to implemented with a smaller geometry (.8
micron vs 1.2) it will still be extremely small and low power, and
low cost. Although the specs on this chip aren't final yet,
expected performance is in the range of 250 MIPS!!. It will have
multiple analog processors and a very high speed serial network
coprocessor on chip. F21 will also support a wider range of
memory chips and have more I/O processors.
Designed for cheap consumer multimedia and parallel processing,
the F21 is planned for release some time in 1995.
For more information on this project, contact: Jeff Fox
<jfox@netcom.com>.
6) GETTING STARTED WITH MICROCONTROLLERS
In order to get started with microcontrollers, several factors need
to be considered.
- cost
- convenience
- availability of development tools
- intended use
The hardware described in this section is readily available,
affordable, and is easy to find software for.
<Inclusion or exclusion of a product in this section doesn't have any
real significance. I've tried to give a good cross-section of
devices and manufacturers - I'm open for suggestions.>
6.1) Evaluation Kits/Boards
Many manufacturers offer assembled evaluation kits or boards which
usually allow you to use a PC as a host development system. Among
some of the more popular evaluations kits/boards are:
Parallax Basic Stamp
This is a small single-board controller that runs BASIC, and costs
only $39. A SIP version for only $29 is also available. THE 256
byte EEPROM can hold a program of up to about 100 instructions.
The BASIC Stamp Programming Package is a complete development
package for only $99.
Parallax, Inc., 3805 Atherton Rd. 102, Rocklin, CA 95765
(916)624-8333 Fax: (916)624-8003 BBS: (916)624-7101
email: info@parallaxinc.com
Motorola EVBU, EVB, EVM, EVS
A series of very popular evaluation/development systems. Comes
complete with the BUFFALO monitor and varying types of development
software. Commonly used for university courses.
Dallas Semiconductor DS5000TK
The DS5000TK allows evaluation of any DS5000 series device in any
existing application without circuit changes. The included
DS5000T plugs into the supplied serial interface pod which
provides a connection to a host PC. A target cable connects the
pod to the target system. Programs can be downloaded directly to
the chip (no EPROM programming!) using the built-in serial loader.
(With Dunfield's Development System, you end up with a cheap
"pseudo-ice". Dunfield also has a circuit if you want to build a
similar device.)
Philips DS750
For $100, you get a "pseudo-ice" for testing your code in-circuit.
Based on the low-end Philips 87c75x parts. Allows source-code
debugging in assembler (included), C, and PL/M. Very popular with
students and consultants to experiment with 80c51 code for their
application. Includes a VERY NICE book which describes the theory
of operation of the board itself, and includes a good number of
experiments that you can try for yourself. Philips sold nearly
10,000 of these boards in the USA (and 5000 in Europe without even
advertising).
National Semiconductor's EPU
The COP8780 Evaluation / Programming Unit (EPU) offers designers a
low-cost ($125) tool for an introduction to National's COP8 Basic
Family of 8-bit microcontrollers. This development tool gives you
an inexpensive way to benchmark and evaluate microcontroller code
in realtime. With its built in MIRCOWIRE/PLUS interface, it can
interface to numerous MICROWIRE/PLUS devices such as EPROMS,
EEPROMS, D/As, A/Ds, DASs, and others, to give a full featured
system. The system includes the EPU board, assembler and debugger
software, sample code, very limited C compiler, wall power supply,
documentation, and a really great box :-).
6.2) Easy chips to use
In addition, several chips provide a similar capability if you are
willing to spend a bit of time wiring up a simple circuit. A few
chips worth looking at are:
Motorola MC68HC11A8P1
Contains Motorola's BUFFALO monitor which has the same
functionality as the one on Motorola's evaluation boards. A
working system can be built with this chip and a Maxim MAX-232.
You can talk to it with a PC or Mac over a 3-wire RS232
connection. It is easy to load and run anything you want in the
on-board RAM and EEPROM. You can even use subprograms in the
BUFFALO monitor after getting a listing from Motorola's BBS or ftp
site. This BBS/ftp site also has freeware assemblers to make a
complete development environment cheaply and quickly.
Intel 8052AH-BASIC
This popular chip with hobbyists is another easy way to get
started. You can download high level code from your host. The
disadvantages are that you can't get away from a multi-chip
solution, the code is noticeably slow, you have to buy an MCS
BASIC manual, you are detached from the inner workings, there
aren't many on-chip goodies like A/D, and you can forget about
running off of a battery.
Dallas Semiconductor DS5000/DS2250
These are well suited even for electronics ignoramuses (ignorami?)
such as myself. All you need to add is a crystal and two
capacitors to end up with a working system. These chips come
complete with non-volatile RAM in the form of static RAM (at least
8K) backed up with a lithium battery. Everything is saved -
program, data, and bugs ;-).
MicroChip PIC '5x series
With only 33 instructions, this chip is definitely easy to use!
Using Parallax's assembler, the instruction set is ** MUCH ** less
intimidating than MicroChip's opcodes! These chips simply need
power, ground, and 1 of 4 different timing circuits. Doesn't get
much easier than that! With I/O pins that are beefy (25mA per pin
sink, 20mA per pin source) and drive both high and low,
interfacing is super easy. It's great to hook LEDs and such
directly to output pins with only a resister in-line!
6.3) Software (Cheap and easy)
You can search for free software for development, but you often get
what you pay for. What is sorely lacking in freeware is technical
support. Several packages are available that provide complete
development environments for some of the more popular
microcontrollers. If you want to be productive right away, think
about investing $100 or so - it'll be well worth the price!
I've been playing with the Dunfield Development System lately (on the
8051), and it's really quite nice. I've also heard many good things
about it from others. It includes a near ANSI-C compiler, run-time
library with source, assembler, ROM debugger, integrated development
environment, monitor with source, utilities, and other extras.
Although not freeware, the low price ($100), the features, all of the
extra goodies, and the good reviews make this a package worth looking
at. Also, if you're interested in working on more than one family of
microcontroller, Dunfield supports a wide range. This means only
needing to learn one system, instead of many. The following chips
are supported: 6805, 6809, 68hc11, 68hc16, 8051/52, 8080/85, 8086,
and 8096. A package including a simulator and a resident monitor
debugger are also available for the 8051 for $50.
Dunfield Development Systems
P.O. Box 31044, Nepean, Ontario K2B 8S8 Canada
(613)256-5820 Fax: (613)256-5821
Email: ddunfield@bix.com
A decent C compiler for the 68hc11 comes from ImageCraft. This
package, which runs under DOS and OS/2, includes a near ANSI C
compiler, assembler, linker, librarian, ANSI C functions and headers,
and 90 page manual. The current release is version 1.02 of their
compiler. The price is just $40. Initial feedback on this compiler
seems promising. The pre-release versions are already in use by many
of you, and will still be available as freeware.
ImageCraft
P.O. Box 64226, Sunnyvale, CA 94086-9991
(Richard Man) imagecft@netcom.com
Another low priced ($100) C compiler comes from Micro Computer
Control. Cross compilers running under DOS are available for the
8051 and the Z8 (including Super-8). This package includes a C
compiler, assembler, linker, librarian, and extensive printed
documentation. A simulator/source code debugger is available for an
additional $79.95.
Micro Computer Control Corporation
PO Box 275, 17 Model Ave., Hopewell, NJ 08525
(609)466-1751 Fax: (609)466-4116 BBS: (609)466-4117
Email: 73062.3336@compuserve.com
C isn't the only development system available (yeah, I know that's
hard to believe) - good solid Basic and Forth development systems are
also available. Refer to the appropriate FAQ for the microcontroller
that you are using for more information on free and commercial
development systems.
If the Microchip PIC is your game, then check out the Parallax tools
(available on their ftp and web sites). All Parallax software is
available free of charge to all takers! This includes PSIM (a PIC
simulator), PASM (an assembler for '5x parts), and PASMX (an
assembler for 'xx parts). These are the full commercial versions,
not hobbled in any way!
7) MICROCONTROLLER PROGRAMMING LANGUAGES
Just a bit of an introduction for the beginner.
7.1) Machine/Assembly language
Machine language is the program representation as the microcontroller
understands it. It is not easy for humans to read and is a common
cause of migraine headaches. Assembly language is a human-readable
form of machine language which makes it much easier for us flesh and
bone types to deal with. Each assembly language statement
corresponds to one machine language statement (not counting macros).
An assembly/machine language program is fast and small. This is
because you are in complete charge of what goes into the program. Of
course, if you write a slow, large, stupid program, then it will run
slowly, be too big, and be stupid. Assembly language (assembler)
can't correct stupidity - although sometimes I wish it could ;-).
If you are starting out learning about microcontrollers, it would be
worth your while first learning assembler. By programming in
assembler, you master the underlying architecture of the chip, which
is important if you intend to do anything significant with your
microcontroller.
7.2) Interpreters
An interpreter is a high level language translator that is closer to
natural language. The interpreter itself is a program that sits
resident in the microcontroller. It executes a program by reading
each language statement one at a time and then doing what the
statement says to do. The two most popular interpreters for
microcontrollers are BASIC and FORTH.
BASIC's popularity is due to its simplicity, readability, and of
course just about everyone has at least played with BASIC at one time
or another. One common compaint about [interpreted] BASIC is that it
is slow. Often this can be solved by using a different technique for
performing the desired task. Other times it is just the price paid
for using an interpreter.
FORTH has a very loyal following due to its speed (approaching that
of assembler language) and its incremental approach to building a
system from reusable parts. Many FORTH systems come with a host
system which turns your desktop computer into a development system.
FORTH can be quite difficult to write in (if you have no experience
with it) and is probably even harder to read. However, it is a very
useful and productive language for control systems and robotics, and
can be mastered in time.
The nicest thing about developing a system with an interpreter is
that you can build your program interactively. You first write a
small piece of code and then you can try it out immediately to see
how it works. When the results are satisfactory, you can then add
additional components until the final product is achieved.
7.3) Compilers
A compiler is a high level language translator that combines the
programming ease of an interpreter with greater speed. This is
accomplished by translating the program (on a host machine such as a
desktop PC) directly into machine language. The machine language
program is then burned onto an EPROM or downloaded directly to the
microcontroller.
The microcontroller then executes the translated program directly,
without having to interpret first.
The most popular microcontroller compilers are C and BASIC. PL/M,
from Intel, also has some popular support due to that company's
extensive use of that language.
Due to both its popularity and its slow speed, it was only logical
that BASIC would appear as a compiled language. A few companies
supply a BASIC compiler for several of the more popular
microcontrollers. Execution speed is drastically increased over
interpreted BASIC since the microcontroller is freed from the task of
interpreting the statements as the program runs.
While interpreted Forth approaches (and sometimes surpasses) the
speed of many compilers, compiled Forth screams along. Today there
are many high performance optimizing native code Forth compilers, and
there are also lots of very cheap or free public domain Forths. Some
of them like Tom Almy's ForthCMP produces optimized native code with
less overhead and better performance than just about anything else
out there. Of course it still has compactness and more elegant
factoring of functionality than in most languages.
C is now the language of choice for the entire universe. C is used
on computers from the tiny microcontroller up to the largest Cray
supercomputer. Although a C program can be a bit tedious at times to
read (due to the terse programming style followed by many C
programmers), it is a powerful and flexible development tool.
Although a high level language, it also gives the developer access to
the underlying machine. There are several very good and cheap C
compilers available for the more popular microcontrollers. It is
widely used, available, supported, and produces fairly efficient code
(fast and compact).
7.4) Fuzzy Logic and Neural Networks
Fuzzy Logic and neural networks are two design methods that are
coming into favor in embedded systems. The two methods are very
different from each other, from conception to implementation.
However, the advantages and disadvantages of the two can complement
each other.
The advantage of neural networks is that it is possible to design
them without completely understanding the underlying logical rules by
which they operate. The neural network designer applies a set of
inputs to the network and "trains" it to produce the required output.
The inputs must represent the behavior of the system that is being
programmed, and the outputs should match the desired result within
some margin of error. If the network's output does not agree with
the desired result, the structure of the neural network is altered
until it does. After training it is assumed that the network will
also produce the desired output, or something close to it, when it is
presented with new and unknown data.
In contrast, a fuzzy-logic system can be precisely described. Before
a fuzzy control system is designed, its desired logical operation
must be analyzed and translated into fuzzy-logic rules. This is the
step where neural networks technology can be helpful to the
fuzzy-logic designer. The designer can first train a software neural
network to produce the desired output from a given set of inputs and
outputs and then use a software tool to extract the underlying rules
from the neural network. The extracted rules are translated into
fuzzy-logic rules.
Fuzzy logic is not a complete design solution. It supplements rather
than replaces traditional event control and PID (proportional,
integral, and derivate) control techniques. Fuzzy logic relies on
grade of membership and artifical intelligence techniques. It works
best when it is applied to non-linear systems with many inputs that
cannot be easily expressed in either mathematical equations used for
PID control or IF-THEN statements used for event control.
In an effort to change fuzzy logic from a "buzzword" (as it is in
most parts of the world) to a well established design method (as it
is in Japan), most manufacturers of microcontrollers have introduced
fuzzy logic software. Most software generates code for specific
microcontrollers, while other generates C code which can be compiled
for any microcontroller.
8) DEVELOPMENT TOOLS
Having a programming language is usually not enough to develop a
program for a microcontroller. Some way of debugging your program is
needed. I am only too painfully aware of this fact.
8.1) Simulators
A simulator runs your microcontroller program on a host machine (such
as your PC). You can step through the code to see exactly what is
happening as the program runs. Contents of registers or variables
can be altered to change the way the program runs. Eliminates (or at
least delays) the erase/burn/program EPROM cycle common in
microcontroller program development. You can work out ideas or learn
about microcontrollers by experimenting with small code fragments and
watching on the screen what happens. A simulator can't support real
interrupts or devices, and usually runs much slower than the real
device the program is intended for.
Some manufacturers have a cross between a software simulator and the
hardware emulator - a hardware simulator. This is a piece of
equipment that plugs into your target, and the pins will toggle and
react like they should - just MUCH slower. Cost of a device like
this is only about $100. Two such boards by National Semiconductor
and Philips are detailed in section 6.2.
8.2) Resident Debuggers
A resident debugger runs your program on the microcontroller itself,
while showing the progress on your host machine (such as a PC). Has
many of the same advantages as simulator above, with the additional
benefit of seeing how the program runs on the real target machine. A
resident debugger needs to "steal" some resources from the target
machine, including: a communications port to communicate with the
host, an interrupt to handle single stepping, and a certain amount of
memory for the resident part (on the target) of the debugger.
8.3) Emulators
If you've got the money, this is the equipment you want to develop
your system with (yeah, that's right, a preposition at the end of a
sentence!). A [usually] expensive piece of hardware that even for
the cheaper versions will run you at least $700. An emulator is a
sophisticated device that pretends that it is the microprocessor
itself, while at the same time capturing information. It provides
full and total control over your target, while at the same time not
requiring any resources from the target. The emulator can either be
a stand alone device with its own display, or it can be interface to
a PC.
8.4) Good Stereo System
This is the most important tool for the microcontroller developer, or
for any computer system developer for that matter. Don't expect to
get anywhere unless you have the proper music playing in the
background(?) at the proper volume. I find that I do my best work
with the Rolling Stones (especially Goats Head Soup) or Clapton
(especially early stuff like Cream - Disraeli Gears is a killer
album!). The volume must be set to cause excrutiating pain to be
most effective. Trust me on this ;-).
Tom Mornini of Parallax reports: "Johnny Cash also has a certain
effectiveness, as well as the Beatles, Aerosmith, and Rush! 60's
rock and British invasion bands in particular seem to have a
particularly productive effect."
This would be an interesting topic for an in-depth study.
Particularly intriguing, is if certain types of music work better
with specific [families of] processors. Another question in need of
study would be if it's really true that the smaller the chip (in
bits), the louder the music needs to be.
9) FINDING OUT MORE ABOUT MICROCONTROLLERS
If you are interested in learning more about microcontrollers, there
are many fine sources of information. You have your choice of
printed media (books, periodicals, informative graffiti) or
interactive (right here on the Internet, or BBSs).
9.1) Books
8-bit Microcontroller Instruction Set Performance
- Digitial Systems Consulting / June 1994
- compares Motorola's M68HC05, Intel's 80x51,
Microchip's PIC16C5x, and National's COP8
- lit number 630008
- (800)272-9959 call this number for copies
The 16 bit 8096: Programming, Interfacing, Applications
- Ron Katz and Howard Boyet
- Microprocessor Training Inc
14 East 8th Street, New York, NY 10003
212-473-4947
- Library of Congress Catalog card number: 85-61954
- According to William Chernoff: "The book is pretty good -
mostly software examples. The one hardware thing I looked
closely at was wrong - a schematic error. Oh well."
The 68hc11 Microcontroller
- Joseph D. Greenfield (at R.I.T.)
- Saunders College Publishing, (Harcourt Brace Jovanovich)
- 1992
- ISBN 0-03-051588-2
- A number of the sections make use of the Buffalo monitor.
This could be useful if you are using the Motorola Trainer EVB.
The 8051 Family of Microcontrollers
-Richard H. Barnett
-Prentice-Hall, 1995 (yeah, that's right, 1995!)
-ISBN 0-02-306281-9
8051 Interfacing and Applications
- Applied Logic Engineering
13008 93rd Place North, Maple Grove, MN 55369
- (612)494-3704
The 8051 Microcontroller
- I. Scott MacKenzie
- Macmillan Publishing Company, 1992
- includes schematics for a single-board computer,
assembly-language source code for a monitor program, and
interfaces to a keypad, LEDs, and loudspeaker.
The 8051 Microcontroller
- James W. Stewart
- Regents/Prentice-Hall, 1993
- $27.50, 273 pages
- includes many interfacing examples (switches, solenoids,
relays, shaft encoders, displays, motors, and A/D converters)
and a chapter on top-down design method
The 8051 Microcontroller: Architecture, Programming and Applications
- Kenneth J. Ayala
- 241 pages, soft cover
- 5.25" diskette with assembler and simulator
- ISBN 0-314-77278-2, Dewey 004.165-dc20
- West Publishing Company
P.O. Box 64526, St. Paul, MN 55164
(800)328-9352
- see review in next section
The Art of Programming Embedded Systems
- Jack G. Ganssle
- 1992, 279pp, $55.00
- ISBN: 0-12-274880-0
- CONTENTS: Introduction, Initial Considerations. Elegant
Structures. Designs for Debugging. Design for Test. Memory
Management. Approximations. Interrupt Mamangement. Real-Time
Operating Systems. Signal Sampling and Smoothing. A Final
Perspective. Appendixes: Magazines, File Format. Serial
Communications. Bibliography. Index.
Assembly Language Programming (for the MCS-51 family)
- F. A. Lyn
- L. S. Electronic Systems Design
Basic-52 Programmer's Guide
- Systronix, Inc. (they also sell a Basic compiler)
- address above
Beginner's Guide
- Suncoast Technologies
A Beginners Guide to the Microchip PIC
- Nigel Gardner
- Character Press, Ltd. (UK)
- ISBN 1 899013 00 8
- software (on floppy) and hardware guide, debugging techniques
- suitably titled, for those with no previous microcontroller
experience
- 19.95 UK Pounds
The PIC Source Book:
- assembly language source code on diskette
- $39
- Scott Edwards Electronics
964 Cactus Wren Lane, Sierra Vista, AZ 85635
(602)459-4802 Fax: (602)459-0623
72037.2612@compuserve.com
C and the 8051
- Thomas W. Schultz
- Prentice Hall
- ISBN 0-13-753815-4
Data Acquisition and Process Control with the M68HC11 Microcontroller
- Frederick Driscoll, Robert Coughlin, Robert Villanucci of
Wentworth Institute of Technology.
- Macmillan Publishing Company
- 1994
- ISBN 0-02-33055-X
- Several Chapters on the 68HC11, instructions, and EVB;
chapters on interfacing Analog and Digital signals to the
68HC11; example applications of interfaces to temperature,
load cell, pressure and thermocouple sensors.
- a good companion to Motorola's "pink" books
Data book / Handbook / Users' Guide
- Advanced Micro Devices
- Dallas (User's guide for the DS5000)
- Intel
- Siemens
Design with Microcontrollers
- John B. Peatman
- ISBN 0-07-049238-7
- This book is on a more advanced level. Uses both the 68hc11
and Intel 8096 as example systems.
- Used for a very popular course on microcontroller design at
Georgia Tech.
Embedded Controller Forth for the 8051 Family
- Academic Press
- William H. Payne
- uses a Forth development system available on the Internet
Embedded Controllers Databook 1992 Edition
- National Semiconductor Corporation
- literature number: 400049
- (800)272-9959 call this number for for copies
Embedded Systems Programming in C and Assembler
- John Forrest Brown
- Van Nostrand Reinhold, 1994
- 304 pages, $49.95
- ISBN 0-442-01817-7
- covers Motorola and Intel processors
- includes diskette with code from the book
- book review in Dr. Dobb's Journal, November 1994, page 121
Experimenter's guide
- Rigel Corporation
Introduction to Microcontroller Design, Based on the 8051 family of
Processors
- Business Data Computers
P.O. Box 1549, Chester, CA 96020
M68hc11 Reference Manual
- Motorola - literature reference M68HC11RM/AD
- This document is the "bible" of the 6811 and is a must-have
for any serious 6811 programmer.
MC68hc811E2 Programming Reference Guide
- Motorola - literature reference M68HC811E2RG
- A pocket-sized guide to the version of the 6811 used on the
Mini Board
The Microcontroller Idea Book
- Jan Axelson (of Microcomputer Journal fame)
- features the 8052-BASIC microcontroller
- hands-on guide with complete plans (schematics, design theory,
program listings, construction details, etc)
- explains how to use sensors, relays, displays, clock/calendars,
keypads, wireless links, and more
- 1994, 273 pages, $31.95 + shipping
- Lakeview Research, 2209 Winnebago St., Madison, WI 53704
(608)241-5824 Internet: 71163.3555@compuserve.com
- contact the author at janaxel@aol.com
Microcomputer Engineering
- Gene H. Miller
- Prentice Hall, Englewood Cliffs, NJ 07632
- 1993
- ISBN 0-13-584475-4
- Explains the basics. Many clear and concise assembly language
example programs.
- Written to be used with the Motorola Trainer (EVB).
Microcontroller Technology, The 68hc11
- Peter Spasov
- Prentice Hall
- ISBN 0-13-583568-2
Microcontrollers: Architecture, Implementation, and Programming
- Kenneth Hintz and Daniel Tabak
- McGraw-Hill Inc. 1992
- ISBN 0-07-028977-8
PIC 16Cxx Development Tools instructions manuals
- Parallax, Inc.
- Instruction manual for the Parallax PIC assemblers
- Instruction manual for the Parallax Software Simulator
- Instruction manual for the Parallax PIC programmer hardware
- Details the Parallax PIC instruction set
PIC 16Cxx Applications Handbook
- Parallax, Inc.
- Contains condensed data sheets for '5x, '64, '71, and '84
controllers
- Contains 14 application notes showing circuits and code for
common projects using the PIC series of microcontrollers.
Posix.4: Programming for the Real World
- Bill O. Gallmeister
- O'Reilly and Associates, 1995
- ISBN 1-56592-074-0
- Part I of the book describes the Posix standard (what it is,
what it isn't, and what it's for), and explains the principles
of real time programming (tasking, messages, scheduling, I/O,
and performance) and why Unix isn't fit for real-time
programming. Part II is a reference on the Posix functions and
header files. Part III contains much of the code for the
exercises in the book.
Programmer's Guide to the 1802
- Tom Swan
- Hayden Book Company, Inc., 1981
- ISBN 0-8104-5183-2
- good introduction to assembly language progamming and an
thorough tutorial on the 1802
Programming Microcontrollers in C
- Ted Van Sickle
- HighText Publications, 1994
- 394 pages, $29.95
- ISBN 1-878707-14-0
- thorough tutorial on C programming, covers aspects of C
programming specific to embedded systems
- covers the Motorola line of microcontrollers (small to large)
- book review in Dr. Dobb's Journal, November 1994, page 121
The Real-Time Kernel
- Jean Labrosse
- R&D Publications, Inc.
Suite 200 1601 W 23rd St., Lawrence, KS 66046
- (913)841-1631 Fax: (913)841-2624
- Based on the article "A Portable Real Time Kernel in C"
in Embedded Systems Programming (Part 1: vol 5 no 5
May 1992, Part 2: vol 5 no 6 June 1992)
- originally written for the Intel 186 but ported to HC11
source code for UCOS11
Single- and Multiple-Chip Microcomputer Interfacing
- G.J. Lipovski
- Copyright 1988
- 478 pages
- ISBN 0-13-810557-X (Prentice-Hall Edition)
ISBN 0-13-810573-1 (Motorola Edition)
- Based around the 68HC11 it covers both hardware and
software at undergraduate level, but the emphasis is on
interfacing.
- Chapter titles:
1 Microcomputer Architecture
2 Programming Microprocessors
3 Bus Hardware and Signals
4 Parallel and Serial I/O
5 Interrupts and Alternatives
6 Analog Interfacing
7 Counters and Timers
8 Communications Systems
9 Storage and Display Systems
Single- and Multiple- Chip Microcomputer Interfacing (Lab Manual)
- Peter Song and G. Jack Lipovski
- Prentice-Hall, 1988
- ISBN 0-13-811605-9
- Support for the above book. Examples based around the Motorola
EVB and the BUFFALO monitor or the EVBU (or 3-chip micro) and
PC-Bug11.
User Manual for the CDP1802 COSMAC Microprocessor
- RCA, 1977
- contains useful hardware and software techniques
9.2) Data and Reference Books
Motorola
- M68hc11 Reference Manual, ref # M68HC11RM/AD
this document is the "bible" of the 6811 and is a must-have
for any serious 6811 programmer
contact Motorola at 800-521-6274 (in the U.S.) to get a free
copy of this manual
- MC68hc811E2 Programming Reference Guide, ref # M68HC811E2RG
a pocket-sized guide to the version of the 6811 used on the
Mini Board, "ownership of this handy reference is proof of
being a true 6811 nerd" - by Fred Martin
National Semiconductor - (800)272-9959 for copies
- COP8 Databook, ref # 400007
- COP8 Selection Guide, ref # 630006
- COP8 Designers Information Kit, ref # 6300007-005
contains: - COP8 Databook (1994 Edition)
- COP8 Selection Guide (1994 Edition)
- Independent 8-bit Instruction Set Analysis
- Independently prepared software analysis of
National's COP8, Motorola's M68Hc05, Intel's
80X51, and Microchip's PIC16C5X
- Utility and Overview Disks
- Self-lead overview on COP8, includes electronic
selection guide and sample application code
- COP8 Utility Disk, Mac ref # 6300000, Windows ref # 630001
typical microcontroller applications and sample code
available by ftp nscmicro.nsc.com in/pub/COP8
- COP8 Overview Disk, Mac ref # 630004, Windows ref # 630005
self-lead COP8 overview, shows product features/benifits
and includes a electronic selection guide (2 disks)
available by ftp nscmicro.nsc.com in /pub/COP8
9.3) Periodicals
Various magazines and journals (journals seems to be THE popular name
for magazines these days) provide articles from time to time on
microcontrollers. If you are just starting out learning, pick those
magazines that feature construction articles.
The Computer Applications Journal (Circuit Cellar Ink)
- programming and construction articles
- POB 7694, Riverton, NJ 08077-8784
- Fax: (203)872-2204
- Voice orders: (609) 786-0409
- On-line orders (BBS): (203) 871-1988
- Email orders: ken.davidson@circellar.com
- $21.95, $31.95 surface Canada and Mexico,
$49.95 air all other countries
Computer Design
- industry announcements and trends
- One Technology Park Drive, P.O. Box 990, Westford, MA 01886
- (508)692-0700
The Computer Journal
- programming and construction articles
- PO Box 535, Lincoln 96648
Dr. Dobbs Journal
- programming articles, concepts, and designs
- 411 Borel Ave., San Mateo, CA 94402
- (415)358-9500
Electronic Engineering Times
- industry announcements and trends
- 500-B Bi-County Boulevard, Farmingdale, NY 11735
- (516)293-3000
Electronics Now
- construction articles
- Box 55115, Boulder, CO 80321-5115
- $19.97 one year
Elektor Electronics
- programming and construction articles
- World Wide Subscription Service Ltd
Unit 4, Gibbs Reed Farm, Pashley Road
Ticehurst TN5 7HE, England
- 27 UK pounds
or
- Old Colony Sound Lab, P.O. Box 243, Peterborough, NH 03458
- Tel. (603) 924-6371, 924-6526
- Fax: (603) 924-9467
- $57 USA and Canada per year
Embedded Systems Programming
- programming and systems design articles
- Miller Freeman Publications
- 500 Howard St., San Francisco, CA 94105
- (415) 397-1881
Inquisitor Magazine
- If you're the type that watched Gilligan's Island for its
socio-political insights, then you'll love a new 'zine that
just crossed my desk - Inquisitor Magazine. It's general
philosophy seems to be ... well, it seems to be ... uh, yeah!
Technical in nature, bizarre, tongue in cheek, eclectic,
electric, did I mention bizarre(?), and lots of fun. Worth
looking at if you like the out of the ordinary. The moving
force behind this magazine is Daniel Drennan, who seems to have
suffered from an overdose of radiation from his computer
monitor ;-).
- Planetarium Station, P.O.Box 132
New York, NY 10024-0132
- (212)595-8370
- Email: inquisitor@echonyc.com
- $16 per year (4 issues)
Microcomputer Journal (formerly Computer Craft)
- programming and construction articles
- 76 N. Broadway, Hicksville, NY 11801
- $18.95 one year, foreign $23.00, foreign air mail $76.00
Midnight Engineering
- 1700 Washington Ave., Rocky Road, CO 81067
- (719)254-4553
MW Media - Product Directories
- Motorola Microcontroller Tools Directory
('94 edition out in 3 weeks)
- Motorola 68K Source ('94 edition available now)
- Intel Development Tools Handbook ('95 edition just beginning)
(survey of commercial development tools for the 8051, 8096,
and 80186 lines of Intel microprocessors)
- Embedded Intel 386 Directory (released in Aug '94)
- Intel 486/Pentium directory (forthcoming in '95)
- 8051 Product Directory ('94 edition out in 4 weeks)
(survey of various 8051 products)
- Hitachi Microcontroller Development Tools Directory
(out in '95)
- AMD FusionE86 Directory (out in '95)
(186,386,486)
- AMD 29K Directory (pending in '95)
- Low Power Product Directory (out in '95)
(3.3. volts and lower)
- DSP Directory (released in May '94)
- Multimedia CD (hopefully out in '95)
- These documents could very well be a "must" if you're into
serious development using any of these chips. If you are
"just" a hobbyist, see how the "other half" lives.
- FREE to qualified developers
- MW Media
- Fairmont Plaza, 50 W. San Fernando, #675, San Jose, CA 95113
- (408)288-4721 (408)286-4200 FAX: (408)288-4728
Nuts & Volts Magazine
- A National Publication for the Buying and Selling of
Electronic Equipment
- 430 Princeland Court, Corona, CA 91719
- Mailed third class, USA only: $17.00 one year
$31.00 two years
- Mailed first class, one year only: $34.00-USA
$35.00-Canada/Mexico
- Foreign/Air Mail - $70.00; Foreign/Surface - $39.00
- (800)783-4624
- Email: 74262.3664@Compuserve.com
9.4) Internet newsgroups
Various newsgroups frequently have discussions or information on
various microcontrollers. Among some of the more useful (especially
the first 3 newsgroups):
comp.robotics
Microcontrollers figure heavily in robotics projects. You will
find a lot of information about the subject in this newsgroup.
Even if you aren't building a robot, check this newsgroup out.
Lots of 68hc11 activity, too.
sci.electronics
alt.comp.hardware.homebuilt
Two good places to find [mostly technical] discussions on
microcontroller use and implementation. Most of the participants
are crazy about "rolling their own", and are eager to share their
knowledge.
comp.realtime
Occasional discussions about real-time use of microcontollers.
comp.sys.m68k
The full line of Motorola 68000 microprocessors is discussed in
this newsgroup, including the very powerful and advanced
microcontrollers based on this family.
comp.sys.6809
This newsgroup covers an old-time favorite, the 6809
microprocessor, which is commonly used for control applications.
Motorola 8 bit microprocessors and microcontrollers (6805, 6811,
etc.) are also discussed in this newsgroup.
comp.sys.intel
Mostly trends and development are discussed in this newsgroup.
From time to time you will find a discussion on some obtuse
technical problem or feature. Lately, the participants seem to
spend all of their time whining about the Pentium bug.
comp.lang.misc
Sometimes questions or discussions on different microcontroller
topics pop up here. I guess it's the ".misc" that attracts these
questions.
comp.ai.fuzzy
Fuzzy logic is rapidly becoming an increasingly important aspect
of [microcontroller based] control systems. This group might very
well become an important forum for those involved in developing
control systems.
comp.dsp
Discussions on Digital Signal Processsing
comp.sys.ti
Texas Instruments products discussed here
sci.engr.control
This forum is for the discussion of control and embedded systems.
sci.engr.semiconductors
9.5) Internet sources of information on specific microcontrollers
If you are interested in finding sources of information on a specific
microcontroller, check out the really fine FAQs ;-) that have been
compiled for the more popular microcontrollers.
Subject: PIC microcontrollers
Newsgroups: comp.realtime
comp.robotics
sci.electronics
sci.electronics.repair
Archive: rtfm.mit.edu : <plus all mirror sites>
/pub/usenet/comp.answers/microcontroller-faq/PIC
/pub/usenet/sci.answers/microcontroller-faq/PIC
/pub/usenet/news.answers/microcontroller-faq/PIC
Maintainer: Tom Kellett
Email: Tom@takdsign.demon.co.uk
Subject: 8051 microcontrollers
Newsgroups: comp.sys.intel
comp.realtime
comp.robotics
comp.lang.forth
sci.electronics
Archive: rtfm.mit.edu : <plus all mirror sites>
/pub/usenet/comp.answers/microcontroller-faq/8051
/pub/usenet/sci.answers/microcontroller-faq/8051
/pub/usenet/news.answers/microcontroller-faq/8051
Maintainer: Russ Hersch
Email: sibit@datasrv.co.il
Subject: 68hc11 microcontrollers
Newsgroups: comp.realtime
comp.robotics
sci.electronics
Archive: rtfm.mit.edu : <plus all mirror sites>
/pub/usenet/comp.answers/microcontroller-faq/68hc11
/pub/usenet/sci.answers/microcontroller-faq/68hc11
/pub/usenet/news.answers/microcontroller-faq/68hc11
Maintainer: Russ Hersch
Email: sibit@datasrv.co.il
Subject: Motorola 68K microprocessor line
Newsgroups: comp.sys.m68k
Archive: bode.ee.ualberta.ca : pub/motorola/general
ftp.luth.se : /pub/misc/motorola/faq
file name of archive is m68kfaq?.zip (? is version)
Comments: also includes information on the 683xxx and 68hc16
Maintainer: Robert Boys - Ontario, Canada
Email: r.boys@genie.geis.com
or
fboys@uoguelph.ca
Several other FAQs have been compiled that address various aspects of
microcontroller design and implementation.
Subject: Robotics
Newsgroups: comp.robotics
Maintainer: Kevin Dowling
(412)268-8830
Email: nivek@ri.cmu.edu
Smail: Carnegie Mellon University
The Robotics Institute
Pittsburgh, PA 15213
Subject: Electronics
Newsgroups: sci.electronics
Comments: There are a number of FAQs available in this newsgroup
on various subjects. Among some of the subjects covered
are: LCDs, stepper motors, suppliers, etc.
Subject: Real-time
Newsgroups: comp.realtime, comp.answers, news.answers
Archive: rtfm.mit.edu : pub/usenet/comp.realtime
Maintainer: Mark Linimon
Lonesome Dove Computing Services
Roanoke, Virginia
Email: linimon@nominil.lonesome.com.
Subject: Neural Networks
Newsgroups: comp.ai.neural-nets,comp.answers,news.answers
Archive: rtfm.mit.edu : pub/usenet/neural-net-faq
Maintainer: Lutz Prechelt
Email: prechelt@ira.uka.de
Subject: Fuzzy Logic
Newsgroups: comp.ai.fuzzy,comp.answers,news.answers
Archive: rtfm.mit.edu : pub/usenet/fuzzy-logic/
Maintainer: Mark Kantrowitz
Email: mkant+@cs.cmu.edu
Subject: Embedded Systems FAQ Roadmap
Comments: Lists various sources of information on embedded systems
found on the Internet
Archive: email cera@netcom.com
send EMBFAQ in SUBJECT line
Maintainer: CERA Research
10) MICROCONTROLLER FREE SOFTWARE SOURCES
This section includes descriptions and references to free
microcontroller software. FTP sites and BBSs contain many quality
packages and code samples for free. For heavy duty use, you might
prefer the many commercial packages that are available. With the
public domain (or free) stuff, you're usually on your own. The
commercial packages usually provide extensive documentation and
support.
If you are looking for commercial software for the 8051, 68hc11, or
PIC, then check out the FAQs on these microcontrollers for details on
what is available.
10.1) FTP sites
The following is a list of the anonymous ftp sites that have source
code and programming languages for various microcontrollers. There
are many others that are not listed here that contains bits and
pieces. Usually you can find them using Archie and searching for
variations on the name of the microntroller you are looking for.
ftp.pppl.gov (formerly lyman.pppl.gov)
- this is a great source of 8051 stuff
/pub/8051
/pub/incoming - check this out for new untested/unsorted items
ftp.mcc.ac.uk
- this is a new 8051 ftp site
ftp.intel.com
- good source of stuff the MCS-51 and MCS-96 families
/pub/mcs51 - various development tools and sample code for the
MCS-51 family
/pub/mcs96 - various development tools and sample code for the
MCS-96 family
nctuccca.edu.tw
- mirror of ftp.intel.com
/vendors/Intel
freeware.aus.sps.mot.com (Motorola)
- the ftp site version of the freeware BBS
- lots of free software for the HC05, HC08, HC11, HC16, 680x0,
683xx, and PowerPC
- also see the Web pages in the next section
nscmicro.nsc.com
- the authoratative source for COP8 infomation
/pub/COP8 - various develepment tools and sample code for the
COP8 family including most application notes
ftp.ee.ualberta.ca (preferred address)
bode.ee.ualberta.ca
wattson.ee.ualberta.ca
- HUGE archive of all sorts of stuff on the 68hc11 (lots of other
good stuff too!)
- you'll have fun mucking around this ftp site, there's piles of
stuff here
/pub/cookbook
/pub/motorola
/pub/motorola/68hc11
/pub/motorola/mcu11
cherupakha.media.mit.edu (cher.media.mit.edu)
- HUMONGOUS archive of all sorts of stuff on the 68hc11 including
the 6.270 robotics project, Mini Board, F1 board, and more
(lots of other good stuff too!)
- you'll lose yourself rooting around this ftp site, there's
piles of stuff here (assemblers, tools, C compilers, plans and
schematics, and many other items)
/pub/6270 - tools, docs, schematics, etc. for the MIT 6.270
robotics project using a 68hc11-based development system
/pub/6811 - software, schematics, etc. for the 68hc11-based F1
board
/pub/incoming - various unsorted or new items
/pub/miniboard - software, docs, schematics, etc. for the 3"x2",
68hc11-based Mini Board controller
ftp.funet.fi (nic.funet.fi)
- this is a good source for various microcontrollers
/pub/microprocs/ (subdirectories include: 1802, 6805, 8048,
8051, 8096, PIC and many other microprocessors)
ftp.sics.se
- many assemblers, utilities, and application notes for the PIC
- Microchip BBS mirror
- ftp site of Memec Scandinavia, Microchip's Swedish agent.
/pub/mchipsoft
ernie.uvic.ca
- files provided by local Motorola representative
/pub (subdirectories include: ibm, dsp96k, dsp56100, dsp56k,
dsptools, develop, mac, mcu302, mcu332, mcu11, pgmr, mcu16,
mcu, market, qa, general, m68k, evm, dsp)
wpi.wpi.edu
- basic stamp information
- PIC "C" compiler
/stamp
ftp.std.com
/vendors/microchip/
ftp.luth.se
/pub/misc/microchip - PIC information
/pub/misc/microchip/stamp/mirror - mirror of wpi.wpi.edu
/pub/languages/assembler - various freeware assemblers
ti.com
read the 00readme file first or you'll be lost
hpcsos.col.hp.com
/misc/ns32k/beowulf
ftp.netcom.com
/pub/imagecft - prerelease version of ImageCraft C for 68hc11
info@circellar.com - Email (not ftp)
- send Email to get information file on services available
- all Circuit Cellar INK and BYTE related files available
asterix.inescn.pt - FORTH archive
/pub/forth
ftp.ultranet.com
/biz/mchip - PIC information
- also see the Web page: http://www.ultranet.com/biz/mchip
ftp.mrc-bbc.ox.ac.uk
/pub/microchip
ftp.oak.oakland.edu
- has information and software for a wide range of
microprocessors and microcontrollers
ftp.uni-erlangen.de
- information on PIC
/mounts/epix/public/pub/Multimedia/VideoCrypt/
microcontroller/microchip.bbs
ftp.armory.com (Steve Walz)
- /pub/user/rstevew/8051
- /pub/user/rstevew/TB8051
- /pub/user/rstevew/incoming
ftp.cygnus.com (Jeff Fox)
- source of information and software on the MuP21 Forth
microcontroller
/pub/forth - MUP21FTP.ZIP includes a software simulator for
the MuP21 and and the upcoming F21.
also see the Web page: http://www.dnai.com/~jfox
ftp.best.com
/pub/cera
ftp.netcom.com
/pub/ce/cera
- embedded systems FTP archive
ftp.parallaxinc.com
/pub
- ftp site of Parallax
"Cool PIC development tools & the BASIC Stamp"
ftp.std.com - Minds-Online ftp site
/customers2/nonprofits/minds-online
- Chock full of compilers, assemblers, code, articles, fuzzy
logic, and much more.
10.2) Web pages
http://motserv.indirect.com (Motorola)
- Motorola's semiconductor WWW page
- on-line searchable Master Selection Guide and OEM Price Book
- 'MFax' service to request all kinds of data sheets
- a bunch of other cool stuff
http://freeware.aus.sps.mot.com/index.html (Motorola)
- Motorola's microcontroller WWW page
- the WWW version of the freeware BBS
- lots of free software for the HC05, HC08, HC11, HC16, 680x0,
683xx, and
PowerPC
http://www.ultranet.com/biz/mchip
- source of information on the Microchip PIC
http://www.dnai.com/~jfox
- source of information and software on the MuP21 Forth
microcontroller
http://www.cera.com
- embedded systems information
http://www.parallaxinc.com
- Parallax Inc. web page
"Cool PIC development tools & the BASIC Stamp"
http://www.ba-karlsruhe.de/automation/home.html
- automation and process control
10.3) BBSs
The following BBSs have 8051 information:
Circuit Cellar, Inc.
- contains code from their magazine articles and from the
original Circuit Cellar articles in Byte magazine, also
contains many other interesting items
- The BBS is mentioned in the masthead of each issue (on the
table of contents page). Excerpts from the BBS appear in Ken
Davidson's ConnecTime column in every issue with a description
of how to access the system at the end of every column.
- (203)871-1988
- Voice: (203)875-2751
- Fax: (203)872-2204
Dunfield Development Systems
- support for their Micro-C C compiler and development tools
- includes a lot of nice goodies - CHECK THIS OUT!
- (613) 256-6289
Electronics Now
- contains code from their magazine articles
- (516)293-2283
- 1200/2400, 8N1
Intel American Marketing Applications Support Bulletin Board System
- 16 lines, hi-speed modems (14.4K)
- Lots of useful info and files (including design examples)
- Full ANSI-BBS with color is recommended, but support for just
about all terminal types is provided
- 916-356-3600 (24 hours)
Auto config: 1200 thru 14.4K Baud
8 data bits, no parity, 1 stop
Iota Systems, Inc.
- Support for their line of hardware and software products
- (702)831-4732
Don Lekei BBS
- support for the PIC line of microcontrollers
- (604)597-3479 (Canada)
Microchip BBS
- support for the PIC line of microcontrollers
- Contact by dialing the same number you would use to get to
Compuserve at 19200,n,8,1, except that you press +<CR> at the
(garbage) prompt, followed by MCHIPBBS as the host (instead of
CIS).
ED Teck. Pubs BBS
- run by Fred Eady who writes for hobbyist magazines
- good source of information on the PIC
- (407)454-3198
National Semiconductor COP8 BBS
- (800)672-6427
- worldwide telnet to nscmicro.nsc.com
Protel (Microchip PIC software support)
- (408)243-0125
Parallax Inc.
- (916)624-7101
Motorola (Austin Texas) BBS
- terrific, has piles of stuff, only some of which is on
bode.ee.ualberta.ca
- (512) 891-3733 (Austin, Texas)
- V.32 9600 Baud modems w/ MNP-5
- 8 Data Bits, No Parity, 1 Stop Bit.
Other Motorola BBSs:
- Munich, Germany: 49-89-92103-111 (2400 baud)
- Stuttgart, Germany: 49-7031-275496 (19200 baud)
- San Diego, California: (619) 279-3907
- Toronto, Ontario, Canada: (416) 497-8989
Philips Semiconductor (parent company of Signetics)
- support for: standard logic, programmable logic,
in-car electronics (planned), 8 and 16 bit microcontrollers,
I2C software, third party software, discrete semiconductors,
cross assemblers (general), RF (planned)
- PHIBBS is located in the Netherlands: +31-40-721102
- maximum 14400 baud / V42bis
- 24 hours a day available
- Help desk: +31-40-722749 (9.00 AM - 16.00 PM CET)
Philips Semiconductors (Signetics)
- support for their 8051 variants
- contains many good source code items
- partially mirrored on ftp.pppl.gov and nic.funet.fi
- (800)451-6644 or (408)991-2406
10.4) Mailing Lists
listserv@oberon.com
- mailing list for the Mini Board and 6.270 board
- send a message containing the word "help" for directions
- mailing list address: robot-board@oberon.com
- maintainer: gkulosa@oberon.com
listserv@hipp.etsu.edu
For information, send empty message.
To subscribe, send message with the body:
subscribe mc68hc11 your_real_name
listserv@netcom.com - mailing list for Imagecraft C
to join the mailing list, send the message "subscribe icc11-list"
listserv@mitvma.mit.edu
to join, send the message "SUB PIC"
list address is: PIC@mitvma.mit.edu
to receive the mailing list as a digest, send the message
SET PIC DIGEST
majordomo@first.gmd.de
to join, send the message "subscribe crossgcc <your address>"
in the message body
Cross GCC mailing list - for building a cross gcc compiler for
your embedded system.
Philips-News@InetBSystems.us.com
- send Email with "subscribe" in the subject field to be put
on list for newsletter
Philips-archive@InetBSystems.us.com
- send Email message with the word "help" in the subject line to
learn how to access the archive
Philips-forum-request@InetBSystems.us.com
- send an Email message with the word "subscribe" in the subject
line to participate in the forum, and receive usage
instructions and guidelines
Philips-Info@InetBSystems.us.com
- send Email message to get information on all of Philips Email
services
MISC@pisa.rockefeller.edu
MISC-d@pisa.rockefeller.edu (digested list)
- a message with "subscribe" on the subject line to one of these
addesses you will get you signed up
- a message with "help" on the subject line you will get info on
how the mail list works
Minds-Online mailing lists
- One mailing list is for announcing significant postings on the
Minds-Online ftp site.
- Another MODERATED mailing list will carry messages from real
engineers who are working on designs slated for volume
production. "No tire-kickers, no students, no academics, no
sleazy something-for-nothing ripoff artists, no hobbyists, and
no totally lost people will be able to post e-mail." (Uh, it
looks like that sort of leaves out yours truly, I certainly
belong in several, if not most, of those categories).
- send an email request to csmall@tiac.net to be added to these
lists
Parallel Performance Group (PPG) mailing lists
- PPG is a provider of high-tech Unix- and PC-based scientific,
engineering, and graphics software. PPG publishes a free
monthly electronic-mail newsletters covering a number of
disciplines of interest to the microcontroller designer.
- For more information, send email to: info@ppginc.com
__________________________________________________________
I disclaim everything. The contents of this article might be totally
inaccurate, inappropriate, misguided, or otherwise perverse - except for
my name (hopefully I got that right).
Copyright (c) 1995 by Russell Hersch, all rights reserved.
This FAQ may be posted to any USENET newsgroup, on-line service, or BBS
as long as it is posted in its entirety and includes this copyright
statement.
This FAQ may not be distributed for financial gain.
This FAQ may not be included in commercial collections or compilations
without express permission from the author.
-----------------------------------
Russ Hersch - sibit@datasrv.co.il